![]() |
VOOZH | about |
The purpose of Clean is to serve as a fast, non-strict, purely functional programming language that is easy to optimize. Clean is characterized by lazy evaluation, which means that only arguments that need to be evaluated in a function call are actually evaluated. In addition, Clean functions can be written to use (partially) strict evaluation when necessary. Unlike R6RS Scheme and similar to Haskell, Clean offers pattern-matching, guards, array comprehensions, and a Hindley-Milner style type inferencing scheme . For I/O-related functions, in contrast to Haskell's monads, Clean offers a uniqueness type inferencing system, which allows destructive transformation of state information within a purely functional framework. Clean is useful for writing relatively bug-free programs in fewer lines of code, and for formally proving properties of those programs, thereby often eliminating the need for debugging.
Clean has the following advantages over similar functional programming languages:
According to Concurrent Clean - Wikibooks, collection of open-content textbooks, "'Concurrent' refers to Clean's ability to run the same process on several computers, similar to Ada."
Further, according to History of "Clean Functional Language.": msg#00030,
The original version of Clean was also known as "CLEAN 0.8" (see "Release History," by the Software Technology Research Group, at http://clean.cs.ru.nl/Recent_Latest_News/body_recent_latest_news.html). The name "Concurrent Clean" is actually a synonym for "CLEAN 1.0," which was the first version when Clean changed from an intermediate language for graph reduction to a fully-fledged general-purpose functional programming language (see "Release History" above).
Another reason is that the word "Clean," being a generic adjective, by itself, usually generates too many false positives in a search on the Internet. Users in other countries who do not speak English and who only know how to search by name would have a hard time in finding Clean if that were its only name. "Concurrent Clean," however, is much easier to find as a name on the Internet, and can be used even by users in other countries who do not speak English.