// guess the programming language of the day

$ whois standard-ml

Standard ML

first released in 1983 · by Robin Milner, Mads Tofte, Robert Harper, David MacQueen

$ guessprog --inspect standard-ml

year
1983
paradigm
functional
family
ml
memory
automatic gc
binding
static
safety
strong

STANDARD-ML(7)

AUTHORS
Robin Milner, Mads Tofte, Robert Harper, David MacQueen
HISTORY
ML was created in the early 1970s by Robin Milner and his colleagues at the University of Edinburgh as the "meta language" of LCF, an interactive theorem prover. Its type system guaranteed that only valid theorems could ever be constructed, and it popularised Hindley-Milner type inference. As dialects multiplied, Milner proposed in 1983 to unify them into Standard ML, whose formal definition was published in 1990 and revised in 1997. It is one of the very few languages completely specified with mathematical semantics.
USAGE
Standard ML is used mainly in universities, for teaching and programming language research, with compilers such as MLton, SML/NJ and Poly/ML. The wider ML family lives on in OCaml and F#.
SEE ALSO
Standard ML on Wikipedia ↗
$ cat shapes.sml
(* Standard ML: types are inferred, data is matched by shape *)
datatype shape = Circle of real
               | Rect of real * real

fun area (Circle r) = Math.pi * r * r
  | area (Rect (w, h)) = w * h

fun sum [] = 0.0
  | sum (x :: xs) = x + sum xs

val total = sum (map area [Circle 1.0, Rect (2.0, 3.0)])
(* val total = 9.14159265359 : real *)