Skip to content
The MLPolyR programming language, revived
Standard ML C Lex Other
Branch: master
Clone or download
Latest commit fed3773 May 7, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ExnTests Initial import of MLpolyR r883 Jul 4, 2016
Tests fix #6 May 6, 2019
Tests2 Initial import of MLpolyR r883 Jul 4, 2016
doc Add readme and doc May 5, 2019
rt Make runtime build. May 5, 2019
util Initial import of MLpolyR r883 Jul 4, 2016
.cvsignore Initial import of MLpolyR r883 Jul 4, 2016
.gitignore Create .gitignore May 5, 2019
Makefile remove rt from makefile because it's useless right now May 6, 2019
README.md Add Lambda rep based interpertation support May 7, 2019
absyn.sml Initial import of MLpolyR r883 Jul 4, 2016
anf-interpreter.sml Initial import of MLpolyR r883 Jul 4, 2016
anf-opt.sml Initial import of MLpolyR r883 Jul 4, 2016
anf.sml Initial import of MLpolyR r883 Jul 4, 2016
asm.sml Initial import of MLpolyR r883 Jul 4, 2016
ast.sml Initial import of MLpolyR r883 Jul 4, 2016
baseenv.sml Initial import of MLpolyR r883 Jul 4, 2016
bbtree.sml Initial import of MLpolyR r883 Jul 4, 2016
cg.sml Initial import of MLpolyR r883 Jul 4, 2016
closed.sml Initial import of MLpolyR r883 Jul 4, 2016
closure.sml Initial import of MLpolyR r883 Jul 4, 2016
color.sml Initial import of MLpolyR r883 Jul 4, 2016
compile.sml Initial import of MLpolyR r883 Jul 4, 2016
elaborate.sml Initial import of MLpolyR r883 Jul 4, 2016
env.sml Initial import of MLpolyR r883 Jul 4, 2016
extacc.sml Initial import of MLpolyR r883 Jul 4, 2016
fclusters.sml Initial import of MLpolyR r883 Jul 4, 2016
flatten.sml Initial import of MLpolyR r883 Jul 4, 2016
flowgraph.sml Initial import of MLpolyR r883 Jul 4, 2016
frame.sml Initial import of MLpolyR r883 Jul 4, 2016
graph.sig Initial import of MLpolyR r883 Jul 4, 2016
graph.sml Initial import of MLpolyR r883 Jul 4, 2016
interp.sml Add Lambda rep based interpertation support May 7, 2019
label.sml Initial import of MLpolyR r883 Jul 4, 2016
lambda-interpreter.sml
lambda.sml Initial import of MLpolyR r883 Jul 4, 2016
lambda2anf.sml
litdata.sml Initial import of MLpolyR r883 Jul 4, 2016
liveness.sml Initial import of MLpolyR r883 Jul 4, 2016
lvar.sml Initial import of MLpolyR r883 Jul 4, 2016
machspec.sml Initial import of MLpolyR r883 Jul 4, 2016
main.sml Add Lambda rep based interpertation support May 7, 2019
makegraph.sml Initial import of MLpolyR r883 Jul 4, 2016
mlpolyr.cm Add Lambda rep based interpertation support May 7, 2019
mlpolyr.grm
mlpolyr.lex Initial import of MLpolyR r883 Jul 4, 2016
mlpolyrc Initial import of MLpolyR r883 Jul 4, 2016
notyet.sml Initial import of MLpolyR r883 Jul 4, 2016
oper.sml fix arith op May 7, 2019
parse.sml fix type mismatch May 5, 2019
pranf.sml fix inconsistency use of May 6, 2019
prbbtree.sml Initial import of MLpolyR r883 Jul 4, 2016
prfclusters.sml Initial import of MLpolyR r883 Jul 4, 2016
purity.sml Initial import of MLpolyR r883 Jul 4, 2016
ra.sml Initial import of MLpolyR r883 Jul 4, 2016
reclab.sml
rewrite.sml Initial import of MLpolyR r883 Jul 4, 2016
symbol.sml Initial import of MLpolyR r883 Jul 4, 2016
traceschedule.sml Initial import of MLpolyR r883 Jul 4, 2016
tracetree.sml Initial import of MLpolyR r883 Jul 4, 2016
translate.sml Initial import of MLpolyR r883 Jul 4, 2016
treeify.sml Initial import of MLpolyR r883 Jul 4, 2016
treeops.sml Initial import of MLpolyR r883 Jul 4, 2016
tvar.sml
types.sml Initial import of MLpolyR r883 Jul 4, 2016
typesutil.sml Initial import of MLpolyR r883 Jul 4, 2016
uncurry.sml
unify.sml Initial import of MLpolyR r883 Jul 4, 2016
value-numbering.sml Initial import of MLpolyR r883 Jul 4, 2016

README.md

MLPolyR

This is a ML dialect with first-class cases (first-class pattern matching) and row-polymorphism that solves the expression problem directly with language features.

Build

Install SML/NJ, tested with v110.75 and v110.87 on Linux (make sure it has ML-lex) and build with this command:

make

and that's it.

Usage

There's a LaTeXed PDF manual is in doc/, which is excatly the same as language spec.

There are also a compiler overview, a paper, and a PhD thesis about MLPolyR.

For code editing, we've created an IntelliJ plugin for MLPolyR.

Current Status

It builds and produce PPC assembly code, which cause failure upon linking phase.

Call mlpolyrc with command line switch -S emits assembly code without linking, which is a viable option if you only want typechecking programs. Other switches all requires linking.

Now you can call with -t to typecheck without doing codegen.

Now you use -e to eval. However, I/O operation is not yet supported, which means all you can do is integer arith stuff.

You can’t perform that action at this time.