This is a specification of the Cuneiform distributed programming language created in Redex.
This semantic reference defines an abstract syntax as a Redex language, a type system as judgment forms, a reduction relation as a notion of reduction and an evaluation context, and several examples for which we plot evaluation traces. The semantic reference comes with a unit test suite suitable to test new Cuneiform implementations.
Note that this reference defines only the semantics of the interpreter up to the interpreter's side of a communication protocol with a distributed execution environment.
In DrRacket open the file main.rkt
and run it by pressing F5
. Several popups appear illustrating the reduction traces of selected Cuneiform expressions.
On the command line enter the following command while in the cf_reference
directory:
raco test -j 8 *.rkt
The previous 0.1.0 release of this semantic reference includes property-based random tests based on Erlang QuickCheck. The current branch of the semantic reference provides only a unit test suite. We might add a property-based test scheme again later.
- Racket 7.0 or higher
- joergen7/cuneiform Erlang-based Cuneiform implementation
- Cuneiform semantics paper published in the Journal of Functional Programming
- Concrete syntax reference in extended Backus-Naur form with railroad diagrams
- Cuneiform website
- Jörgen Brandt (@joergen7) joergen.brandt@onlinehome.de