ML is indeed a pretty cool Functional Programming Language
. It is a language whose semantics
are close enough to those of lamba calculus
to make proving things about ML programs in a mathematically rigorous way possible.
I first came across ML as a first-year undergraduate at Cambridge University
, where it is used as a teaching language with which very few students
have had prior experience (most are already familiar with several imperative
languages e.g. C
The first piece of ML code I ever saw was this one:
fun fact 0 = 1
| fact n = n * fact (n-1);
This function can be used to calculate the factorial
of a positive integer. It should be fairly clear how it works: The language uses a (polymorphic
) type checker which interprets
the first matching "type instance" satisfied in a function definition (c.f. Prolog clauses
!). The |
symbol can be read as "or".
Of course, ML gets far more complicated (and exciting!) than this. It has concepts of lazy evaluation
and its datatype
operator can provide hours of fun.