This development is an experiment with the following goals:
- Adopt smalltt and related techniques into the cubical world.
- Show how various OCaml packages of ours fit together.
- Write natural grammars without neccesarily conforming to LR(k).
- Use lots of Unicode emojis.
opam pin git+https://github.com/RedPRL/bantorra
opam pin git+https://github.com/RedPRL/algaett
cat tests/example.ag
algaett tests/example.ag
The last line should not have an output, which means it type checks!
The core NbE algorithm closely follows Andrรกs Kovรกcsโs smalltt. Here are some notable differences:
- We intentionally do not implement unification.
- The universe itself (as a term) is not inferable, which means that the checking might have to be redone with the type unfolded.
The type inference from the universe ๐ will fail, and then the type checking will be redone with ๐ unfolded to ๐ ๐ 1๏ธโฃ.
๐ ๐ : ๐ ๐ 2๏ธโฃ ๐ ๐ ๐ 1๏ธโฃ ๐ _ ๐ ๐ : ๐
- The conversion checker is generalized to handle subtyping generated by cumulativity.
- algaeff: reusable effects-based components
- asai: error messages (not actively used yet)
- bantorra: unit resolution (not actively used yet)
- bwd: backward lists
- mugen: universe levels
- yuujinchou: namespaces and name modifier
We are using the Earleyโs parsing algorithm which can handle all context-free grammars.