Hacker News new | past | comments | ask | show | jobs | submit login
Programming in Standard ML (2011) [pdf] (cmu.edu)
66 points by networked on June 5, 2015 | hide | past | web | favorite | 19 comments

If you are interested in Standard ML, take a look at http://mlton.org/

Mlton is one of the few whole-program optimizing compilers. One time I wrote a DSL in Standard ML to analyze 100GB+ of memory-mapped data.

Thanks to Mlton, the result was very performant. Thanks to SML, I felt very productive and the result was pretty much bug-free. Highly recommended.

I picked up a used copy of Jeff Ullman's Elements of ML Programming a couple of months ago for less than five bucks. It strikes me as compact and readable in the K&R style, in that it doesn't get bogged down in the tedium of regurgitated technical details or over emphasis on syntax.

It probably helps that ML [Ullman uses SML/NJ] isn't much on ceremony to begin with. Yet somehow, I never feel like it needs more curly braces and semicolons.

Elements of ML Programming stands out as one of my favorite programming books. It's the best introduction to the ML style of languages (OCaml, Haskell, SML, F#) that I've seen.

How does it compare to ML for the Working Programmer?

It's a muddled mess in comparison and I would not advise it to anyone over Ullman's Elements of ML Programming or Harper's Programming in Standard ML. It's actually bad enough that it bothers me there's not more Standard ML books out there so people would stop mentioning it.

I'd consider Ullman's ML book to be up there with K&R C and Wirth's books in conciseness and clarity. I suggest it to beginners specifically.

I took a liking to SML when working on a subversion-resistant development process and software configuration management system. The security requirements for tools was that verification of safe/secure usage is easy for humans and the executable matches the source. SML, with restricted coding style, is quite easy for humans to verify (vs C++) because of its syntax and high-level style. For source-to-binary verification, I found that the FLINT [1] team had a certifying compiler for SML along with verification of all sorts of stuff. The probability of it being backdoored was extremely slim and source was available. So, there you have it: SML & FLINT as solution to bootstrapping a subversion-resistant toolchain for use by mutually suspicious parties.

[1] http://flint.cs.yale.edu/flint/software.html

EDIT: Btw, thanks for the book!

I just started looking at Standard ML so I could understand the examples in Purely Functional Data Structures. There's something very pleasing in the simplicity of its syntax.

Anybody have experience in applying it to larger problems?

That is a fantastic book, also 'ML for the working programmer' is really good [1]. I always wanted to use SML in anger, but the lack of third party libraries is a major hindrance. Today I think one is better served using OCaml, F#, or Clojure (this is not intended to be an exhaustive list) if a highly productive functional language is desired.

[1] http://www.amazon.com/ML-Working-Programmer-2nd-Edition/dp/0...

Yeah, I used it industrially for a brief period, using it to do theorem proving on hardware descriptions. Pleasing is the right word, especially the clean syntax, close-to-pure functional nature, type signatures and type inference. At the time the tools were immature so it might not have been the best idea, but they've had some time to settle down.

I remember 15-212 at CMU. That was a killer course...

A bit of context would be nice. Is this the go-to book to learn SML, or just a random source?

SML has been on the higher ranks of my to-learn stack, because apparently it has some nice features Haskell does not, most notably I've heard great things about the module system.

I am working through this coursea course via YouTube and I also found some github repos that have the course's homework material. https://www.coursera.org/course/proglang

The first language is ML and than moves to Racket. Really learned a ton just doing the first weeks. It is more of a CS 202 Programming Languages course which was perfect for me since I really wanted to learn more about functional programming.

I took the second live offering of Dan Grossman's class on Coursera in fall 2013. There was another in the last year, so if the pattern holds, there would be another in the next few months or so.


I sure hope so I really liked his style. At first I was like oh no another syntax is 75% of material, but it ended up being described and explained clearly.

The best part of the course for me was that it gave me an excuse to learn Emacs and a framework in which to do it. Painful no doubt, but now I have become spoiled.

I'm not sure if SML can catch up with OCaml's nice tooling (opam, merlin, Core, etc...), even if it feels a bit cleaner language to me. A Shame, but merits of a programming language are not proportional to its success.

Edit. Oh, and here's a previous discussion: https://news.ycombinator.com/item?id=2433860

I've not read it, but if it's by Robert Harper it's probably a highly reliable source of information.

Not sure. This was the book I used: http://www.it.dtu.dk/introSML/

There are plenty of suggestions here http://www.smlnj.org/doc/literature.html

interested in sml ppl can find stuff here, i think these are the new cmu courses noob - 15-150 intermediate - 15-210 advanced - 15-411 might have to email somebody at cmu to get the lecture notes dump

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact