LFE Features
The Erlang Inheritance
Language Properties
- Lightweight concurrency
- Asynchronous communication
- Error handling
- Process isolation
- Continuous evolution of system
- High-level language
Influencing Factors
- No global data
- No mutable data
- Standard Erlang data types
- Pattern matching and guards
- Erlang functions (with name and arity)
- Erlang modules
- Compiler and interpreter
The Lisp Inheritance
- Functions and variables have separate namespaces (LFE is a Lisp-2)
- Macros (unhygenic) with the added benefit of supporting pattern matching
- Homoinconicity
- Easy conceptual mapping between LFE and decades of Lisp software
LFE-Specific Features
- Three-pass compiler (macro expansion, linting, code-generation)
- Generates Core Erlang
- New work on LFE REPL will support function and macro definition in the REPL
- Full interoperability with Erlang/OTP and third-party Erlang libraries
- Java interop via JInterface and Erjang
Hipster Appeal
- A "rare" language, more fringe than Erlang proper
- A younger cousin to Clojure (released in 2008) that far fewer programmers
know about
- Actor model
- Lisp!
- Create your own compilers
- DSLs galore
- Metaprogramming
- FP
- Heavily inspired by Common Lisp and Scheme
- Borrows some ideas from Elixir and Clojure
- The Banarama of languages
- Open
- Telecom
- Platform
- It’s a language out of a language out of Sweden that can be used to build web
scale, asynchronous, non-blocking, sharded, event driven, message passing,
NoSQL, reliable, highly available, high performance, real time, clusterable,
bad ass, rock star, get the girls, get the boys, impress your mom, impress
your cat applications
- You can blast it in the face with a shotgun and it keeps on coming
- C10k what?
- Utterly terrifying
- 19 billion dollars