The Concurrent Clean System

Clean is a lazy functional programming language developed at KU Nijmegen by Rinus Plasmeijer (rinus@cs.kun.nl), Peter Achten (peter88@cs.kun.nl), Smetsers, Nöcker, van Groningen, and others. Papers and current implementations are accessible via the ftp server ftp.cs.kun.nl:/pub/Clean/.

(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.


The book by Rinus Plasmeijer and Marko van Eekelen: Functional Programming and Parallel Graph Rewriting (Addison-Wesley, 1993) is a textbook on functional programming consisting of sections on Alltogether some 560 pages.
This page was last changed on Jan 25 1995, 15:14 by mfx@pobox.com. Comments and corrections welcome.