Skip to content
Frank compiler
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Merge remote-tracking branch 'hq/master' Mar 12, 2019
shonky Added output command for integers and a little sync problem. Jan 21, 2019
tests
.ghci
.gitignore Ignore .stack-work Nov 16, 2016
BwdFwd.hs
Compile.hs Added some cmp builtins for Int and a tree relabelling example. Dec 4, 2018
CompileTest.hs Removed out-dated parser test module. May 6, 2017
Debug.hs Integrated new syntax for adaptors, a la "Choice(s y x -> s x)" Nov 13, 2018
DesugarSyntax.hs
Frank.hs
FreshNames.hs Restructured pretty printers Jun 7, 2018
Makefile
Parser.hs Added some cmp builtins for Int and a tree relabelling example. Dec 4, 2018
ParserCommon.hs
README.md
RefineSyntax.hs
RefineSyntaxCommon.hs Added Bool and an equality operator on Chars as builtins. Feb 27, 2018
RefineSyntaxConcretiseEps.hs Temp. commit Sep 24, 2018
RefineSyntaxSubstitItfAliases.hs
Run.hs Removed redundant parser combinator for parsing raw operand term. May 6, 2017
Syntax.hs
TestingIdeas Dummy test harness summary output (testing layout/decorations). Nov 29, 2016
TypeCheck.hs Integrated new syntax for adaptors, a la "Choice(s y x -> s x)" Nov 13, 2018
TypeCheckCommon.hs
TypeCheckTest.hs Removed out-dated parser test module. May 6, 2017
Unification.hs
frank.cabal Restructured pretty printers Jun 7, 2018
stack.yaml Stack build file for Frank Nov 16, 2016
testharness-alt-result.txt Integrated new syntax for adaptors, a la "Choice(s y x -> s x)" Nov 13, 2018
testharness-alt.py Refactored adaptors Sep 24, 2018
testharness.py
todos.md added todos Jan 28, 2019

README.md

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

You can’t perform that action at this time.