• Stars
    star
    273
  • Rank 150,780 (Top 3 %)
  • Language
    Haskell
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Frank compiler

Frank

An implementation of the Frank programming language described in the POPL 2017 paper, ``Do be do be do'' by Sam Lindley, Conor McBride, and Craig McLaughlin. See the (revised) paper at: https://arxiv.org/abs/1611.09259

Further enhancements are described by Lukas Convent in his MSc thesis of 2017: http://lukas.convnet.de/proj/master/index.html

Installation procedure

The easiest way to install frank is to use stack (external website, github):

stack setup

The above command will setup a sandboxed GHC system with the required dependencies for the project.

stack install

The above command builds the project locally (./.stack-work/...) and then installs the executable frank to the local bin path (executing stack path --local-bin will display the path).

Running a Frank program

To run a frank program foo.fk:

frank foo.fk

By default the entry point is main. Alternative entry points can be selected using the --entry-point option.

Some example frank programs can be found in examples. They should each be invoked with --entry-point tXX for an appropriate number XX. See the source code for details.

To specify a search path for source files use -I or --include=INC.

Optionally a shonky file can be output with the --output-shonky option.

Further debug options are

  • --debug-output: Enable all debugging facilities
  • --debug-verbose: Enable verbose variable names etc. on output
  • --debug-tc: Enable output of type-checking logs

Limitations with respect to the paper

  • Only top-level mutually recursive computation bindings are supported

  • Coverage checking is not implemented