Code
Interpreter: Lambdo.scala
S-Expression parser: SExp.scala
Related articles
- Desugaring regular operations in context-free grammars
- Parsing S-Expressions in Scala
- Tree transformations: Desugaring Scheme
- Lexical analysis in Racket
- Grammar: The language of languages (BNF, EBNF, ABNF)
- Standalone lexers with lex: synopsis, examples, and pitfalls
- Closure conversion: How to compile lambda
- How to compile with continuations
- Understand exceptions by implementing them
- A-Normalization: Why and How
- Compiling up to the λ-calculus
- Parsing with derivatives (Yacc is dead: An update)
- 7 lines of code, 3 minutes: Implement a programming language
- Compiling Scheme to C
- Compiling to Java
- 26 languages in 25 days: Reflections on language design
- 26 languages in 25 days: Strategy, tactics, logistics
- Church encodings and the Y Combinator in Python
- Introducing QuickCheck: Number theory and red-black trees
- Understanding and implementing laziness
- Higher-order list operations
- Implementing Java as a CESK machine, in Java
- Writing an interpreter, CESK-style
- Writing CEK-style interpreters in Haskell
- Deleting from Okasaki's red-black trees
- By example: Continuation-passing style in JavaScript
- Self-inlining anonymous closures in C++
- Self-inlining anonymous functions in C++
- Lambda-style anonymous functions in C++
- Lambda-calculus in C++ templates
- Lazy-list-based streams in Scala
- Church encodings in Scheme
- Okasaki red-black tree maps in Scala
- Non-termination without loops, iteration or recursion in Javascript
- Memoizing recursive functions in Javascript with the Y combinator
- Advanced programming languages
- A pipelined, non-blocking, extensible web server in Scala
- Architectures for interpreters
- Learning Scala in small bites
- Parsing M-Expressions in Scala with combinators
Twitter: @mattmight
Instagram: @mattmight
LinkedIn: matthewmight
Mastodon: @mattmight@mathstodon.xyz
Sub-reddit: /r/mattmight