This repository contains the implementation of efci, a Curry interpreter
based on effects and handlers.
git clone https://github.com/nbun/efci
cd efci
git submodules pull --init
stack install
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.
- Without an option, the input is interpreted as a Curry expression within the loaded file.
:qexits interpreter.:orotates between the available interpretation modes:timetoggles printing time elapsed during interpretation:fcytoggles printing of themainexpression generated from the input.
stack test effective-curry-interpreter
stack bench effective-curry-interpreter
- Ambiguous types are not defaulted. For example,
1 + 2needs to be annotated as1 + 2 :: Int. - Not all external functions are implemented.
Haskell'24 paper Making a Curry Interpreter using Effects and Handlers.