In reading an article about Haskell I came across a reference to another functional language: Clean.
Although it appears to be yet another language designed by academia, there are some cool features.
A Functional Programming Language like Clean is based on the concept of mathematical functions. Clean is a pure functional language, there is not such a thing as an assignment. This has a big advantage: a function cannot have a side-effect. A Clean function is referential transparent: the result of a function only depends on the value of the function arguments and on nothing else.
Another great feature is that there are few runtime errors. The syntax takes a bit getting used to, as it is with most functional languages when approached by someone with a procedural background. In some ways it reminds me of APL, where a lot of power can be expressed in very little syntax.
I hope to spend a little time playing with Clean. It supports most of the major operating systems.