Home

Awesome

Freak

Experimental functional programming language with (co)algebraic effects and (co)handlers, implemented by doing continuation passing style tranformation.

CPS translation for algebraic effects in the language is based on existing Links langauge, and coalgebraic part on Runners in Action.

For an introduction to algebraic effects, see resources in effects-bibliography.

This language is implemented as a part of thesis, which can be found here. In that document you can find everything about semantics of the language, implementation details, as well as solid mathematical foundations.

Usage guide

All commands are available within src directory.

Build and install

After compiling and linking program to PATH, one may evaluate program as follows: freak <path-to-file>. To display all usage options, type freak --help. Variety of examples in Freak language can be found in this directory.

Running tests

Test cases are available here, they include both inline and file-based tests. For more details about writing tests, one may refer to HUnit documentation.