[MLton] cvs commit: mlb integration

Matthew Fluet fluet@cs.cornell.edu
Thu, 29 Jul 2004 09:59:45 -0400 (EDT)

> > The only missing piece there is annotations.
> It is worth thinking about which annotations are "expert" and should
> not be documented.

True.  The "normal" annotations certainly include: sequenceUnit,
warnMatch, warnUnused, and forceUsed.  The "expert" annotations certainly
include: allowConstant, allowOverload, allowPrim, allowRebindEquals.
That leaves: deadCode, allow{Import,Export}.  I can see arguments both for
and against making these normal annotations.  I guess I don't see any harm
in making allow{Import,Export} to be normal annotations -- one can then
ensure that the compiled code is "pure" Standard ML.

> > Steve, can you check that this converts to HTML correctly? I don't
> > have heava on any system I use.
> Unfortunately, it doesn't convert very well.
> I'm not sure if it's worth fixing this.  It may be better to admit
> that the semantics is a mathematical document, and distribute it as a
> self-contained pdf.

Agreed.  I developed it as a self-contained document, so it should be easy
to go back.

> My understanding is that we will add a section
> (not appendix) with a gentle intro aimed at those wanting to
> read/write their own mlbs.

Yes -- there will definitely be a "working programmer" intro to using

> I'm wondering when we should start using mlbs to build mlton.  Since
> we still need to use SML/NJ, the only way I see to do it is to
> duplicate the information that is in the mlbs and the cm files.

Yes, we need to duplicate the information, but that doesn't preclude
making one derived from the other.  If we keep to fairly stylized .mlb or
.cm files, we can probably textually convert one to the other.  The one
exception is in mlton/front-end, where I think an mlb could avoid the
import.cm problem.

That raises a couple of other issues:
 - how far back in self-compiles do we support
 - what other mlb tools should we write:
   - mlbcat -- like cmcat, you get a list of files, losing all scoping
   - mlb2pld -- mlb to Portable Library Description
   - pld2mlb -- the reverse