[Haskell-cafe] Byte Histogram

Richard O'Keefe ok at cs.otago.ac.nz
Mon Feb 7 23:33:31 CET 2011

On 8/02/2011, at 10:43 AM, Roel van Dijk wrote:

> On 7 February 2011 22:00, Andrew Coppin <andrewcoppin at btinternet.com> wrote:
>> 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...
> You are not necessarily wrong. 
> The Clean of 1987—1994 sounds a lot like the language you are
> talking about.
> 1 - http://www.cs.ru.nl/~thomas/publications/groj10-exchanging-sources-between.pdf

No, it doesn't.  Here's an example from
"Clean - A Language for Functional Graph Rewriting",
T.H. Brus, M.C.J.D. van Eekelen, M.O. van Leer, M.J. Plasmeijer,
a 1987 paper which I _think_ is the first one about Clean:

Start stdin	-> Double (Add (Succ Zero) Zero);
Double a	-> Add a a;
Add Zero n      ->n |
Add (Succ m) n	->Succ (Add m n);

You will notice
 - an entire absence of 'let'
 - an entire absence of any 'letrec'

You'll also discover that Clean was originally
 - thought of as an intermediate language
 - a subset of something called LEAN

Clean 1 adopted Haskell-like syntax, but it was lazy from the beginning.

More information about the Haskell-Cafe mailing list