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
Clean is a general-purpose, pure and lazy functional programming language used for real-world applications. Available for the Linux, Mac, and Windows operating systems, the Clean system, which includes its libraries and documentation, may be downloaded from its official website. Besides the language system itself, the site also discusses its iTask System, which is a toolkit for building web-based workflow management systems, and Cloogle, the official Clean search engine.
https://clean.cs.ru.nl/
The CGL is a complete development system for the creation of 2D games using the Clean programming language. It is not, however, a game generator; it does require coding. Available for the Windows operating system, using DirectX, CGL works with Tile Studio, a game development application that includes sprite and map editors. The Clean Game Library can be downloaded from the site, which includes a tutorial, support information, and example games.
http://cleangl.sourceforge.net/
Cloogle is a search engine for the Clean programming language, offering quick and easy access to the documentation for Clean through keyword search. The full documentation may also be accessed by chapter and sub-chapter, including an introduction, basic semantics, modules, and scopes, defining functions and constants, predefined types, defining new types, overloading, generic programming, dynamics, uniqueness typing, strictness, macros and efficiency, and foreign language interface.
https://cloogle.org/
Computer Science Canada: Clean - The Functional Programming Language
CompSci.Ca presents an overview of the Clean programming language, discussing the advantages of using a pure functional language, and the particular advantages afforded by Clean’s uniqueness typing. Other topics include the use of Clean in research concepts, a list of features available with Clean, and a comparison of Clean with GCC, G++, Haskell, Scheme, Scala, and OCaml. Recommendations of tutorials and guides for the language are included.
http://compsci.ca/v3/viewtopic.php?t=15459