<div>Some of these opinions are rather stale. That said.</div><div><br></div><div>SML is very much a dual of Scheme with types and inference. Very much a dual in the sense SML's core syntax is minimal, clean and elegant. From a type perspective H-M inference isn't as amazing as it used to be. Haskell, Scala, yes and Typed Racket and many others, in some ways, even in an all ways exceed the SML type envelop. What has stood the test of time is SML modules, and are worth exploring in and of themselves. I mean any language with "functor" as a keyword has sex appeal.</div>
<div><br></div><div>Ocaml is roughly equivalent to SML but the syntax is all over the map and the module system smells of bolt on. You'll get exposed to the same key concepts from both, so go with the one that doesn't look like it was designed by the brainf*ck guy on a 3-day binge.</div>
<div><br></div><div>If you spend time with SML it is inevitable you'll be drawn into the Haskell vortex to plunge beneath its event horizon or to be slingshoted on your way at near light speed. Stopping off for a cup of tea with Mrs. SML and munching on algebraic data types on your way to visit Mr. Haskell is not a bad itinerary at all.</div>
<div><br></div><div>Once that road has been traveled, another life altering exploration would be to go visit Mr. Smalltalk. These days however, I'd suggest going to visit Miss Newspeak instead. She has explored further afield now that Mr Smalltalk is retired. Classes as the module construct, lexical scope overriding in priority of inheritance, messages and late binding will change your thinking. And virtual classes, once that epiphany hits, that will rewire your synapses. </div>
<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><br><div class="gmail_quote">On Sun, Sep 18, 2011 at 1:36 PM, Grant Rettke <span dir="ltr"><<a href="mailto:grettke@acm.org" target="_blank">grettke@acm.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Over the years I've noticed on-list that comments are made about OCaml<br>
and Haskell and abstract data types.<br>
<br>
It seems like it would be fun to learn more about this stuff; and I<br>
guessed that learning SML would be a nice place to start because it is<br>
stable and seemed to be used by educators a lot.<br>
<br>
What do you think?<br>
<br>
Are _ML for the Working Programmer_ and _Elements of ML Programming,<br>
ML97_ a good place to start?<br>
<br>
Best wishes,<br>
<br>
Grant<br>
<font color="#888888"><br>
--<br>
<a href="http://www.wisdomandwonder.com/" target="_blank">http://www.wisdomandwonder.com/</a><br>
ACM, AMA, COG, IEEE<br>
_________________________________________________<br>
For list-related administrative tasks:<br>
<a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
</font></blockquote></div><br>