Ben Bacarisse <ben.use...@bsb.me.uk>: > The question came up because (I paraphrase) "even Scheme uses > assignment to explain mutually recursive definitions". Haskell defines > them using the fixed point operator. It's not really about Haskell > programs so much as how the language features are defined.
BTW, here's the relevant definition (<URL: http://www.schemers.org/Docum ents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_sec_4.2.2>): library syntax: (letrec <bindings> <body>) [...] Semantics: The <variable>s are bound to fresh locations holding undefined values, the <init>s are evaluated in the resulting environment (in some unspecified order), each <variable> is assigned to the result of the corresponding <init>, the <body> is evaluated in the resulting environment, and the value(s) of the last expression in <body> is(are) returned. Each binding of a <variable> has the entire letrec expression as its region, making it possible to define mutually recursive procedures. Marko -- https://mail.python.org/mailman/listinfo/python-list