Ela is a simple, yet powerful modern functional language with a state-of-art syntax. Ela combines strict and lazy evaluation, dynamic typing and features, which are normally adopted by statically typed languages, such as algebraic data types and Haskell style type classes.
Ela can be used to study and teach functional programming, for prototyping, for writing theorem provers, for scripting, as well as for development of applications in a pure functional way. Ela comes with a rich standard library, interactive console and a graphical development environment. Ela also offers a flexible and powerful interface to .NET programming languages, such as C#.
- Functions, first class
- Modules, also first class
- Algebraic types
- Type classes
- Lazy when you need it
//Infinite list (implicit laziness) a = 1 :: a //Lazy map, explicit laziness map' _  =  map' f (x::xs) = & f x :: map' f xs take 10 <| map' (*2) a