Using OCaml compilers for this course

The programming assignments in CSE505 will use the Caml dialect of ML. (Objective Caml, or OCaml for short, is the implementation of Caml.) You may use any remotely recent version of OCaml (nothing we do should depend on a particular version), but we recommend a research prototype called SEMINAL developed by Ben Lerner here at UW. SEMINAL differs from OCaml only in how it presents error messages from the type-checker; we believe it is better than the conventional approach, encourage you to use it, and would appreciate any feedback or suggestions.

Installation

Installing SEMINAL

SEMINAL is available on the department Linux machines in /uns/opt/seminal/bin/ocamlc. To use it by default, add /uns/opt/seminal/bin to the head of your $PATH, or alias ocamlc to /uns/opt/seminal/bin/ocamlc. For further information on /uns, see the FAQ at http://www2.cs.washington.edu/uns/faq/uns-user-faq.html#q3.1. Feel free to email Matt and Ben (blerner@cs) if you have any questions using SEMINAL. Information on installing SEMINAL on your own machine is forthcoming; contact one of us if you really want to do this right away.

See below for usage instructions for SEMINAL; in particular if you do not use the -seminal command-line flag, you will not see any difference over the standard OCaml error messages.

SEMINAL does not have a special version of the read/eval/print loop (i.e., ocaml instead of ocamlc). There is a /uns/opt/seminal/bin/ocaml, but you cannot give it the -seminal option and you will not get SEMINAL-style error messages from it. However, there is no problem using both ocaml and the SEMINAL ocamlc.

Installing Standard OCaml at UW

If you do not wish to use SEMINAL, you are free to use the standard OCaml compiler. Email me (Matt) or Dan if you have any problems or questions.

Running OCaml:

In general, you can use ocaml to experiment on the fly, and ocamlc to compile an entire file at once. To exit ocaml's read-eval-print loop, either use Ctrl+D (only works on Linux boxes), or "exit 0;;" (which works anywhere).

For further information, see part III of the system manual: http://caml.inria.fr/pub/docs/manual-ocaml/index.html

Running SEMINAL:

Note each of the three approaches may give you complementary information that can help you diagnose your type error. Bug reports and/or particularly interesting success stories are appreciated.