How dont-rely-on-nulls/karuta works
Karuta is a semi-toy relational programming language. Its documented workflow is to parse and compile Karuta programs, produce BEAM assembly, and use erlc as part of the toolchain; its BEAM runtime provides logic variables and backtracking. The repository also includes module support and a Sakura-related integration that the README marks incomplete. Source excerpts were not available, so internal call order and ownership are not established here; dashed edges indicate those unverified links rather than inspected behavior.
Main entry points: cli.ml Command Line · Compiler.ml Compiler · Parser.ml Parser · builder.ml BEAM Builder
Components 12
Language Frontend
- Parser
lib/Parser.ml - Language AST
lib/Ast.ml
Modules
- Module Support
lib/karuta/Module.ml - Sakura Integration
lib/sakura
BEAM Toolchain
- Command Line
lib/cli.ml - Compiler
lib/shared/Compiler.ml - BEAM Builder
lib/beam/builder.ml - BEAM Serializer
lib/beam/serializer.ml - BEAM Assembly
lib/beam/abstract_format.ml
Runtime
- BEAM Runtime
runtime/karuta.lfe
Other components
- Programmer
- Erlang Compiler
Connections 10
- Programmer → Command Line: invokes
- Command Line → Parser: parses
- Parser → Language AST: produces
- Command Line → Compiler: compiles
- Compiler → Module Support: supports modules
- Compiler → BEAM Builder: builds BEAM
- BEAM Builder → BEAM Serializer: serializes
- BEAM Serializer → BEAM Assembly: produces
- BEAM Assembly → Erlang Compiler: compiled by
README.org - BEAM Runtime → Programmer: provides logic runtime
README.org