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.


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 Feel free to email Jonathan and Ben (blerner@cs) if you have any questions using SEMINAL. If you really want to install SEMINAL on your own machine, contact Ben.

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 Jonathan 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:

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.