Repository navigation
What's New
Complete rewrite from C++ to Go with a clean package architecture.
Language
- Minimal Lisp with holes (
?x,?ns.x) for coordinated partial evaluation - Partial evaluator with algebraic simplifications (constant folding, identity, annihilation)
- Hole filling with incremental multi-party support
- Namespaced holes for multi-party coordination (
?client.x,?server.y)
CLI
aperture eval— evaluate expressionsaperture partial— partial evaluation preserving holesaperture fill --hole x=10— fill holes and evaluateaperture run— execute.aptfiles- Interactive REPL with
:holes,:partial,:trace,:envcommands
Architecture
pkg/ast— AST types with sealed interface patternpkg/parser— hand-written recursive descent S-expression parserpkg/eval— full evaluator, partial evaluator, algebraic simplifierpkg/value— runtime value typespkg/env— lexically scoped environmentsdemo/query/— HTTP client/server demo of local computation pattern
Install
go install github.com/queelius/aperture/cmd/aperture@v0.2.0