On Tue, Nov 3, 2009 at 1:37 PM, Andrew Coppin
<andrewcoppin@btinternet.com> wrote:
Deniz Dogan wrote:
Recently there has been a lot of discussion on this list about the
programming language Clean and converting Clean programs to Haskell.
Reading the Wikipedia article on the language, I can't really see any
major difference between that and Haskell, except for the monads vs.
uniqueness types.
So what's the deal with Clean? Why is it preferable to Haskell? Why is it not?
As far as I can tell, Clean is to Haskell as C is to Pascal. I.e., Clean is notionally very similar to Haskell, but with lots of added clutter, complexity and general ugliness - but it's probably somehow more machine-efficient as a result.
(All of which makes the name "Clean" rather ironic, IMHO.)
Of course, this is merely the opinion I formed after performing a cursory scan of some of the introductory documentation. I haven't actually seen any code written with it or anything, so my opinion probably doesn't mean a lot...
It's preferable to Haskell in situations where Haskell isn't the best choice.
The criteria for that decision is different from problem to problem.
Example:
I had to implement a ring buffer, and I wanted the code using it to be written in Haskell. I ended up implementing the buffer in C, and wrapping it in FFI from Haskell because implementing a destructive array in Haskell is kind of unwieldy to someone of my experience level. In Clean, it looks like the uniqueness typing allows for destructive updates in a very controlled manner.
Disciplined Disciple might be interesting to look at here too, but i'm not sure I'd deploy anything with DDC just yet :-)
Dave