Clean is a FunctionalProgrammingLanguage available from http://www.cs.kun.nl/~clean/index.html
Some features:
- Functional
- Pure
- Lazy (with strict on demand and inferred)
- Strongly typed (Milner / Hindley / Mycroft), higher-order types, polymorphic, etc.
- Graph-rewrite semantics
N.B. CleanLanguage is only available under a restrictive license. It's LGPL so long as you're not selling anything you write. Otherwise you have to purchase a commercial license. This probably means CleanLanguage will not survive long.
- Someone didn't do their homework. Using GPL'd software does not make any output from the software GPL'd (let alone the LGPL case). I.e., a compiler is just a program which takes input in the form of source code and produces output in the form of machine code. The company is not claiming that you can't sell your programs. The licensing only matters when it comes to modifying the compiler itself... --AnonymousDonor
(Apparently version 2.02 has a dual licensing policy, both commercial and the LGPL: http://www.cs.kun.nl/~clean/Download/License_Conditions/license_conditions.html . This may be an intelligent movement from their part, or at least something that will slow down their death, time will say...)
Huh? I don't get it. The LGPL explicitly allows commercial redistribution of derived works as well as the work itself, right? So, is it LGPL'd or not? -- MatthiasBenkard?
- I don't think they intend to restrict commercial distribution if you choose to use the LGPL. From their website: "A commercial license has the advantage that one is not obligated to make source code available. It furthermore gives right to technical support and is highly appreciated as a sign that you appreciate our work."
Particularly noteworthy is its approach to building the user interface; see
http://www.cs.kun.nl/~clean/Manuals/Object_I_O_1_2_Tutorial/object_i_o_1_2_tutorial.html
[Copied from FunctionalProgrammingLanguage...]
In Clean, you pass the world around, and compute new values of the world. Because Clean has UniqueTypes, the Clean compiler can guarantee that there is always only one live copy of the world around. Therefore, it can mutate the world in-place, rather than having to copy it entirely, which would be computationally costly, to say the least. ;-)
The HaskellLanguage doesn't have unique types, so it cannot take this approach.
Therefore it uses monads (cf. MonadicProgramming).
Could please anyone who is/was developing real world applications with Clean supply some info (here or by e-mail) about the type of software he was writing, the interfaces to other systems he needed, and his experience with the Clean system? -- HelmutEnckRadana
See http://sourceforge.net/projects/funlib for an OpenSource project that uses Clean.
CategoryProgrammingLanguage CategoryFunctionalProgramming