Skip to content

Latest commit

 

History

History
39 lines (29 loc) · 1.54 KB

README.md

File metadata and controls

39 lines (29 loc) · 1.54 KB

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

  • Install dependencies: make install
  • Compile: make build
  • Link to PATH: sudo make link
  • Remove artiacts: make clean

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.

  • Run tests: make tests
  • Run code linter: make lint
  • Compile, run linter and tests: make check