[MLton] How easy is it to steal MLton's front end?

Stephen Weeks MLton@mlton.org
Wed, 21 Jul 2004 10:32:57 -0700

> Has anyone successfully stolen MLton's front end to use with another
> back end?

Not really.  The only slightly related uses I am aware of are Simon
Helsen's use of a very old MLton for a partial evaluator (MLOPE) and
Dan Wang's use for a type-preserving GC.  Simon's stuff hooked into
our Xml IL and Dan's hooked into the Ssa IL (at the time it was called

> The input that I need is a defunctionalized, explicitly-typed,
> monomorphic lambda calculus with sums, products, and some reasonable
> base types.

The overall compiler structure is in main/compile.fun.  Here are the
some ILs corresponding to various passes.

transformation		output IL
---------------		---------
defunctorization	CoreML
monomorphisation	Sxml
defunctionalization	Ssa

> Given that MLton defunctionalizes higher-order functions, and used to
> and may still clone functions for monomorphization, 

Yes, MLton still does this.

It looks like you want to hook into the Ssa IL.  I don't know if you'd
call it a lambda calculus, but it certainly meets all your other
requirements (defunctionalized, explicitly typed, monomorphic with
sums, products, and base types).  Have a look at
mlton/ssa/ssa-tree.sig in our sources for a description of the IL.
You may want to read it bottom up for a top-down overview.