Macro System
The macro system is the distinguishing feature of LFE. It provides:
- Compile-time metaprogramming: Transform code before compilation
- Syntactic abstraction: Create new language constructs
- Code generation: Generate repetitive code automatically
- DSL creation: Embed domain-specific languages
Two macro styles:
- Procedural macros (Common Lisp style): Full Turing-complete transformations
- Pattern macros (Scheme style): Declarative syntax-rules with pattern matching