Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ML family linear history

4 views
Skip to first unread message

Xah Lee

unread,
Feb 2, 2009, 1:20:21 AM2/2/09
to
is there a brief summary of the ML family lineage?
i'm esp interested in the syntax changes.

that is, ML, SML, Caml, Caml light, Ocaml, F#.

some sites showing page length source code of each would be
sufficient. (i should be able to find this)

... basically, there are so many variations... and i've read Wikipedia
on each. But it's still confusing why each variation is created or
what context, or to what degree is the variation compatible or
complete new lang, and whether it's just a single guy's thesis work or
actually has some user base.

in practice, i think caml, caml light, all subsumed into just Ocaml or
F#. Ocaml & F# are largely compatible, with F# mainly geared for
Microsoft's “.NET”. While ML is today mostly just SML? is SML still
much used? What's the diff between ML and SML?

in Wikipedia article
http://en.wikipedia.org/wiki/Standard_ML
at the bottom you see a bunch of variants. That's really tasking ...
some of them are apparantly some single person's research project
who's home page has not been updated for some decade... some of them
are simply implementations of sml, while other variants seems to be
addition of modules only ...

Thanks.

Xah
http://xahlee.org/

Torben Ægidius Mogensen

unread,
Feb 4, 2009, 8:45:11 AM2/4/09
to
Xah Lee <xah...@gmail.com> writes:

> is there a brief summary of the ML family lineage?
> i'm esp interested in the syntax changes.
>
> that is, ML, SML, Caml, Caml light, Ocaml, F#.


ML as used in HOL was the first. From this was more or less
independently derived SML, CAML and Lazy ML (which is now long dead).

CAML Light and O'Caml were derived from CAML and F# much later from
O'Caml.

SML'97 was an update to the original SML definition, and while there
are many implementations of this standard, most implementations have
mutually incompatible extensions, such as continuations, quoting,
higher-order functors, floating-point patterns, etc.

> in practice, i think caml, caml light, all subsumed into just Ocaml or
> F#. Ocaml & F# are largely compatible, with F# mainly geared for
> Microsoft's “.NET”.

F# is moving further and further away from O'Caml compatibility.

> While ML is today mostly just SML? is SML still
> much used? What's the diff between ML and SML?

SML added a more powerful module system and a somewhat different type
system (as the original was unsound if references are used). SML'96
abolished these extensions to the type system and replaed them by a
limitation to where polymorphism can occur. While less powerful in
theory, it was much simpler and in practice equally good (except for a
few rare cases). IIRC, some changes to how modules handle records
were also made.

SML is used mostly in academia, but it also has some presence in
industry (though not as much as O'Caml).

Torben

Jon Harrop

unread,
Feb 4, 2009, 1:43:01 PM2/4/09
to
Torben Ægidius Mogensen wrote:

> Xah Lee <xah...@gmail.com> writes:
>> in practice, i think caml, caml light, all subsumed into just Ocaml or
>> F#. Ocaml & F# are largely compatible, with F# mainly geared for
>> Microsoft's “.NET”.
>
> F# is moving further and further away from O'Caml compatibility.

I'm not sure about that. The intersection of OCaml and F# has not changed
much (at all?) since F# was created. While it is arguably small (e.g. no
module system to speak of in F#) Coherent Graphics have managed to create a
cross-compiling 40kLOC commercial code base with it.

>> While ML is today mostly just SML? is SML still
>> much used? What's the diff between ML and SML?
>
> SML added a more powerful module system and a somewhat different type
> system (as the original was unsound if references are used). SML'96
> abolished these extensions to the type system and replaed them by a
> limitation to where polymorphism can occur. While less powerful in
> theory, it was much simpler and in practice equally good (except for a
> few rare cases). IIRC, some changes to how modules handle records
> were also made.

I am in the process of implementing an ML on top of LLVM. How useful do you
think the language would be without modules (but with type-specific
equality, comparison and hashing)?

> SML is used mostly in academia, but it also has some presence in
> industry (though not as much as O'Caml).

I was surprised to learn that The MathWorks (creators of MATLAB) still sell
some SML code and, of course, still use FFTW which was written in OCaml.

--
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/?u

Torben Ægidius Mogensen

unread,
Feb 5, 2009, 10:46:03 AM2/5/09
to
Jon Harrop <j...@ffconsultancy.com> writes:

> I am in the process of implementing an ML on top of LLVM. How useful do you
> think the language would be without modules (but with type-specific
> equality, comparison and hashing)?

I believe there are a number of preprocessors around that compile the
module system away, leaving you with just a single core-language file.
If you added that to your compiler, it could be quite useful.

I think MLTon also specialises equality, and the ML kit compiler uses
a Haskell-style runtime dictionary for equality, which also gives
specialised (though not inlined) equality predicates.

Torben

0 new messages