A 9-Month Odyssey: Implementing Bel in Clojure
This post details a nine-month journey of implementing the Bel programming language in Clojure. Initially envisioned as a weekend project, the author encountered several challenges: creating a custom parser for Bel's unique syntax; handling Bel's continuation-passing style, which necessitated a re-implementation of the interpreter's call stack to overcome stack overflow issues; and optimizing performance by leveraging Java data structures. The author delves into Bel's powerful features, such as `lit`, `globe`, `scope`, `mac`, and `err`, showcasing the capabilities enabled by continuations. While the project is still under development, the author highlights the valuable lessons learned throughout this challenging yet rewarding experience.