(08.03.95) Clean now has a home page at KU Nijmegen. Much more material than on my meager page.
Hip-Hip-Hurrah! After long waiting (half a year after first promised ;-), the 1.0 release (for the Mac) it available. Lets hope it doesn't take too long for the Sun release. There are many additional features unheard-of before, especially (type class-based) overloading. A new I/O system is also promised to appear soon.
Clean 0.8 has been implemented for the Macintosh, Sun-3, Sun-4, and x86 machines (besides some exotics only the parallelizing folk know and care about). The latest public version of Clean was 0.84; I keep a Sun-4 binary and libraries of it around; here is an ftp link to the entiry directory (for us locals only, sorry world).
The semantics of Clean provides the notion of uniqueness types. If a function parameter is unique, the type system guarantees that arguments passed to it don't exist anywhere else. (There is a connection to linear types, but I am not quite sure what it is. I have not yet seen the formal semantics of Clean.) Declaring a parameter unique enables all kinds of nifty optimizations (e.g. in-place updating of arrays).
Some papers about Clean:
I have paper copies of
P. Achten, R. Plasmeijer: ``A Framework for Deterministically Interleaved Interactive Programs in the Functional Programming Language Clean''
which describes menu systems and such in 16 pages, and
P. Achten, R. Plasmeijer: ``The Ins and Outs of Clean I/O'',
which does the same, but on a system level and in much more detail. Interesting is the way that the unique I/O state can be split up in unique sub-states, which must later be merged in the output state.
Anthony H. Dekker (Natl. Univ. of Singapore) has written a 40-page tutorial on Clean using the ``life'' program as an extended example. You can access it as either as a TeX DVI file (gzipped 47k) or as a PostScript file (gzipped 104k). The program sources are accessible in this directory.