Clean(ID:1305/cle001)

pure lazy functional language 


Subset of Lean. Experimental lazy higher-order functional language with no syntactic sugaring (not even infix expressions or complex lists.) Also used as an intermediate language. Implemented via graph rewriting on the ABC abstract machine.


pure and lazy functional language based on the concept of mathematical functions. A CLEAN function is referential transparent: the result of the function only depends on the value of the function arguments and on nothing else. This has important consequences: once a function is working, it will always work. A function will always react in the same way, regardless when and in which context the function is used. One can reason about CLEAN functions and the program as a whole by using traditional mathematical reasoning, uniform substitution and mathematical induction. Has a modular, sophisticated I/oh library. Although CLEAN does not have assignment, objects can be updated destructivily. It's the only functional language in the world which has it's own type system, uniqueness typing: enabling updating of functional arguments destructively!  Although lazy by default, it can easyieasilyly turn into a strict language to obtain optimal time/space behavior.  Software Technology Research Group introduced (among other things) term graph writing, lazy copying, abstract reduction and uniqueness typing.


Structures:
Related languages
Lean => Clean   Subset
Clean => Concurrent Clean   Extension of

References:
  • "Clean A Language for Functional Graph Rewriting", T. Brus et al, IR 95, U Nijmegen, Feb 1987. view details
    Resources