milly/README.md

41 lines
1.3 KiB
Markdown

# milly
milly is an hobby, and should not be taken seriously.
Interpreter for a Minimal ML-like language whose ideal goal is to be used for bootstrapping compilers and interpreters.
## How to build
milly's interpreter is written in portable ISO C11, sources are in `src/` and header files are in `include/`.
If your system happens to have a `make` implementation compatible with **GNU Make**, you can just run:
> make
Otherwise, something like this should work:
> $(CC) -std=c11 -o milly -Iinclude/ src/*.c
## The language
milly is a minimal dialect of Standard ML and Haskell,
here is a list of the features (or better, limitations) I want to introduce:
- Keep the implementation <5000 LOC
- Eager evaluation (call by value)
- Algebraic Datatypes (pretty useful for representing syntax trees)
- First class functions
- Pattern patching (pretty useful for analyzing syntax trees)
- Integers, booleans, strings
- Mutable `ref` cell
- FFI to C
- Polymorphic types à la Hindley Milner (probably unfeasible)
- Automatic currying of functions, with optimised partial evaluation (unfeasible)
- Delimited continuations (this is an overkill)
- Easy syntax allowing easy kakoune support
milly's full grammar is specified as a pair of lex and yacc files in `ref_parser/`.
kakoune plugin for milly is in `extra/milly.kak`.