
Haskell en Clean are very much alike.
From what I could determine from a basic Clean introduction, Clean is very *unlike* Haskell, having a far more verbose and low-level syntax. (E.g., the compiler can't even determine whether a binding is recursive or not for itself. You have to say that manually.)
I have no idea what you are talking about here. Clean is _very_ Haskell-like, including typeclasses.
Here's the first few lines of code from a Clean file I wrote in 1998.
I clearly have my languages mixed up. The language I'm thinking of required all variables (even top-level ones) to be declared with "let" - unless the definition is recursive, in which case you have to say "letrec" (i.e., the compiler it too stupid to deduce this automatically). Apparently that isn't Clean...