SML and related stuff


Does anyone know where I can get a copy of Cornell University report TR 89-1068, "First-class synchronous operations in Standard ML", by John Reppy? How about other material on signals, continuations, or "light-weight threads"??


[I found this tech report and others browsing Cornell's WWW server. See TR90-1144. My home page has a couple of papers on implementing threads for multiprocessors using SML/NJ's continuations.


Info pages for the SML/NJ compiler and the Edinburgh library are available on the Web:!info/sml/!!first!info/sml-lib/!!first

Some other online references (e.g. Bob Harper's "Introduction to SML") are accessible on the following page.

(21.03.95: When he says "info pages", he means "translated TEXINFO" pages)

(23.02.95) The ML Readline library is currently under development. The functionality is based on the Free Software Foundation's Readline and History libraries.

(21.03.95: visited it. contains real live on-line SML code that sits there are stares at you.)


The CAML Light ftp directory. From the README file:

Caml Light is a small, portable implementation of the ML language. that runs on most Unix machines. It has also been ported to the Macintosh and to the IBM PC.

Caml Light implements the Caml language, a functional language from the ML family. Caml is quite close to Standard ML, though not strictly conformant. There are some slight differences in syntax and semantics, and major differences in the module system (these changes were required to support separate compilation).

Caml Light is implemented as a bytecode compiler, and fully bootstrapped. The runtime system and bytecode interpreter is written in standard C, hence Caml Light is easy to port to almost any 32-bit platform. The whole system is quite small: about 100K for the runtime system, and another 100K of bytecode for the compiler. 1.2 megabyte of memory is enough to recompile the whole system. This stands in sharp contrast with other implementations of ML, such as SML-NJ, that requires about ten times more memory. Performance is quite good for a bytecoded implementation: five to ten times slower than SML-NJ. Optimizing compilers, camlot and bigloo, generate bigger executables, but performances are comparable to the best ML implementations.

Caml Light comes in two flavors: a classical, interactive, toplevel-based system; and a standalone, batch-oriented compiler that produces standalone programs, in the spirit of the Unix cc compiler. The former is good for learning the language and testing programs. The latter integrates more smoothly within programming environments. The generated programs are quite small, and can be used like any other command.

From: "Dr. Richard Botting" (
Subject: ANNOUNCE: ML Syntax Summary on WWW
Date: 19 Jan 1995 21:54:41 MET
Organization: CS Dept., Calif. State Univ., San Bernardino
Distribution: world
Reply-To: "Dr. Richard Botting" (
Summary: ML Syntax at //
Keywords: EBNF ML Syntax WWW MATHS
Originator: jgmorris@UNBOX.FOX.CS.CMU.EDU
I have retrieved Larry Paulson's syntax for Standard ML (posted, here, some years ago) and (after asking his permission) translated it into a form that can be read by mosaic, netscape, lynx and other World-Wide-Web Browsers. It has a context list, index of definitions, and links back to the original document. Please point your browser at

or add this link to your most suitable pages:

ML Syntax

The 'raw' form is in

Disclaimer::=`CSUSB may or may not agree with this message`.
Copyright(1995)::=`Copy as long as you include this copyright and signature`.

I wrote ChopShop in SML/NJ. ChopShop is a software tool that helps people understand unfamiliar C programs. ChopShop does interprocedural dataflow analysis and enables people to produce Pictorial Slices, or graphs that show how information flows from sources to sinks.

Why did we write a C analyzer in ML? Because we got a really good C front-end in SML/NJ from AT&T. This was fortunate because the analyses are decribed in our papers in terms of instance (variable at site) relations. We implement the relational expressions from the paper directly in ML. This makes it easier to make sure the theory agrees with the implementation. Since we are prototyping emerging ideas, ML's types and modules make it easier to continually make changes to the code.



(21.03.95: the URLs are hand-patched, originally they missed the http:servername parts. As it is, just times out on me, so i can't verify them. sorry for the inconveniences.)

This page is part of the Trash Heap, language section.