Aviva Directory » Computers & Internet » Programming » Clean

Designed by the Software Technology Research Group of Radboud University in Nijmegen, the Netherlands, Clean is a purely functional, general-purpose programming language.

First appearing in 1987, the language continues to be under active development by researchers at Radboud University and is available through a Simplified BSD License. It was influenced by Haskell, with which it shares the properties of referential transparency, list comprehension, guards, garbage collection, higher-order functions, currying, and lazy evaluation.

Clean is a cross-platform language. However, an integrated development environment (IDE) is included with Clean's Windows distribution.

Clean deals with mutable state and I/O functions through a uniqueness typing system, as opposed to Haskell's use of monads. The compiler takes advantage of this uniqueness type system to generate more efficient code. Because anything with a uniqueness type can be used only once, a unique value can be changed in place.

Upon compiling, source files are translated into Core Clean, a basic variant of Clean, in Clean. Core Clean is then converted to Clean's platform-independent bytecode, which is implemented in C and Clean. Bytecode is converted into object code, using C. Lastly, object code is linked with other files in the module and the runtime system, then converted into an executable in Clean. Early versions of Clean were written completely in C.

For the purpose of closing the gap between Core Clean, a highly-functional language, and machine code, the ABC-machine is used. Generating concrete machine code from abstract ABC code, using the ABC-machine, it is easier to target multiple architectures for code generation. The SAPL system compiles Core Clean to JavaScript, and does not use ABC code.

The focus of this category is on the Clean programming language, as well as any IDEs, editors, or other tools designed to facilitate programming in Clean. Tutorials, guides, user groups, and forums are also appropriate here.



Recommended Resources

Search for Clean on Google, Bing, or Yahoo!