Assignment versus binding

Marko Rauhamaa marko at pacujo.net
Tue Oct 4 15:36:23 EDT 2016


Ben Bacarisse <ben.usenet at 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



More information about the Python-list mailing list