Building Languages to Solve Problems
When a problem is complex enough, the solution is often to build a language for that problem. SICP's most powerful idea.
Posts influenced by Structure and Interpretation of Computer Programs—on abstraction, composition, and computation as a medium for expressing ideas
Structure and Interpretation of Computer Programs by Abelson and Sussman isn’t really about Scheme or even programming—it’s about computation as a medium for expressing ideas. The way they build up from simple primitives to interpreters to register machines fundamentally shaped how I think about abstraction and the layering of meaning.
These posts carry that influence forward: the closure property (combining things yields the same kind of thing), abstraction barriers, procedures as first-class citizens, and the deep insight that good abstractions come from understanding the algebraic structure of what you’re computing.
The book: Full text (free) | MIT lectures
Algebraic maximum likelihood estimators
Explore project →When a problem is complex enough, the solution is often to build a language for that problem. SICP's most powerful idea.
The problem is combinatorial. You have N algorithms (sort, search, find, copy) and M containers (array, list, tree, hash table). The naive approach: implement each algorithm for each container. …
Most statistical software treats probability distributions as static parameter sets you pass to sampling or density functions. algebraic.dist takes a different approach: distributions are algebraic …
A modern C++20 library for compositional online data reductions with numerically stable algorithms and algebraic composition.
A production-ready implementation of relational algebra for JSONL data with full support for nested structures. jsonl-algebra brings dotsuite's dotrelate concepts to production with streaming operations, schema inference, and composable pipelines.
An R package where solvers are first-class functions that compose through chaining, racing, and restarts.
Introducing rerum - a Python library for symbolic computation with a readable DSL, powerful pattern matching, and a security-conscious architecture that separates rules from computation.