Skip to content

Latest commit

 

History

History
45 lines (32 loc) · 1.42 KB

README.md

File metadata and controls

45 lines (32 loc) · 1.42 KB

efci - Effective Curry Interpreter

This repository accompanies the Haskell'24 paper Making a Curry Interpreter using Effects and Handlers.

The most recent code might differ from the version shown in the paper. You can check out

  • 4db98c2 for the original interpreter
  • 1421632 for an extended version featuring unification
  • 90dfb99 for 'fusion all the way'

Installation

stack install

Usage

Run

efci [filename]

from the directory where filename.curry is located. If efci is called without an argument, only the Prelude module is loaded. If you have rlwrap installed, use rlwrap efci [filename] to get an input history for the interpreter.

Options

  • Without an option, the input is interpreted as a Curry expression within the loaded file.
  • :q exits interpreter.
  • :fcy toggles printing of the main expression generated from the input.

Run tests

stack test effective-curry-interpreter

Run benchmarks

stack bench effective-curry-interpreter

Known issues

  • Ambiguous types are not defaulted. For example, 1 + 2 needs to be annotated as 1 + 2 :: Int.
  • Not all external functions are implemented.