Clean definition language
higher-order purely functional language
from the University of Nijmegen
. Clean was originally a subset of Lean
, designed to be an experimental intermediate language and used to study the graph rewriting model. To help focus on the essential implementation issues it deliberately lacked all syntactic sugar
, even infix
expressions or complex lists,
As it was used more and more to construct all kinds of applications it was eventually turned into a general purpose functional programming language, first released in May 1995. The new language is strongly typed
(Milner/Mycroft type system), provides modules
and functional I/O (including a WIMP
interface), and supports parallel processing
and distributed processing on loosely coupled parallel architectures. Parallel execution was originally based on the PABC abstract machine
It is one of the fastest implementations of functional languages available, partly aided by programmer annotations
to influence evaluation order.
Although the two variants of Clean are rather different, the name Clean can be used to denote either of them. To distinguish, the old version can be referred to as Clean 0.8, and the new as Clean 1.0 or Concurrent Clean.
The current release of Clean (1.0) includes a compiler, producing code for the ABC abstract machine
, a code generator, compiling the ABC code into either object-code
or assembly language
(depending on the platform
), I/O libraries, a development environment
(not all platforms), and documentation
. It is supported (or will soon be supported) under Mac OS
, Windows 95
, and Solaris
(http://cs.kun.nl/~clean/). E-mail: firstname.lastname@example.org
. Mailing list: .
["Clean - A Language for Functional Graph Rewriting", T. Brus et al, IR 95, U Nijmegen, Feb 1987].
["Concurrent Clean", M.C. van Eekelen et al, TR 89-18, U Nijmegen, Netherlands, 1989].