During the Fall of 2005 I will be teaching CS 361 , which deals with the principles of computer languages. Since most students begin with a language like Java, which is Object-Oriented, or even Pascal or C, both of which are procedural languages, we will study the language ML rather intensively. ML (Meta Language) is a functional language, developed by Robin Milner at the University of Edinbugh in Scotland.
We will do much more than study a new language, however. ML is used primarily to help the student see the range of possibities in languages. Functional languages have the interesting property that you program without loops, assignments, or even variables. All work is done by defining interesting (recursive) functions, and evaluating them with actual arguments.
You can read more about ML on the FAQ page. (You can download SML here also)
Or you can check the ML newsgroup comp.lang.ml.
Standard ML of New Jersey may be obtained from the AT&T home page research.att.com. Standard ML of New Jersey runs on most UNIX systems, the Macintosh, and IBM PC's. It is very large, however.
CAML-Light was developed at INRIA in France and runs on most platforms.
Moscow ML (for the IBM PC and others) This is probably the best one of reasonable size.
For the PC
For the Macintosh
Meta Lizard (for the Macintosh OS9). Self extracting archive. Decode with binhex. Double-Click to expand.
Other Course Materials
MacLennan's Language Design Principles
MICRO Compiler Materials
Additional materials, including updates to some of the packaged files.
Language Principles files (text format).