On 8/02/2011, at 10:43 AM, Roel van Dijk wrote: > On 7 February 2011 22:00, Andrew Coppin <[email protected]> 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. _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
