
Essentials of Standard ML Modules (1996) [pdf] - eatonphil
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.208.9430&rep=rep1&type=pdf
======
jasperry
I keep thinking there must be great potential for using the ML Module system
to create high-performance, customize-at-compile-time libraries, like C++
template libraries but without the messiness and potentially even more
expressive.

But I've had a hard time finding SML or OCaml projects that advertise this as
a benefit. Does anyone know of a project that's achieved this? Maybe many do,
but don't state it that way explicitly?

~~~
jlouis
This is what MLton essentially does as a system. It will expand away every
module use such that they have no runtime overhead, but only exist in order to
organize code. This allows you to build software consisting of many small
functors which are composed together to form the final program.

It is perhaps _the_ reason to invest time in OCaml or Standard ML. But it
requires a compiler which can reap the benefit as well. Newer versions of
OCaml, with flambda as a backend, also help with this and gives you some of
the advantages of full-module-expansion.

In practice, any decently sized OCaml or Standard ML program written by
someone fluent in the module system would be an example project.
Unfortunately, most of these I know about doesn't live in the Open Source
world where I can just point to them.

(Disclaimer: I was involved somewhat with MLton)

~~~
metafunctor
There's the MLton Library project:
[https://github.com/MLton/mltonlib](https://github.com/MLton/mltonlib)

------
melling
An OCaml MOOC started yesterday, for anyone who might be interested:

[https://www.fun-
mooc.fr/courses/parisdiderot/56002S02/sessio...](https://www.fun-
mooc.fr/courses/parisdiderot/56002S02/session02/About_this_course/)

------
shanxS
Gateway timeout. Can someone please copy paste the text to a more available
service?

~~~
throwaway729
Google the title. The first few results are all the right thing.

It's a PDF with lots of figures / code listings so copy/paste isn't really
possible.

