Warum hängt der Code, der schattierte Bindungen verwendet, "hängen"?

8

Ausführen dieses Codes:

%Vor%

im Interpreter:

%Vor%

hängt mit sehr geringer CPU-Auslastung. Warum ist das? Ich habe j = 16 erwartet.

    
Matt Fenwick 10.08.2012, 13:13
quelle

1 Antwort

16

Nach dem Haskell-Bericht Abschnitt 3.12 :

  

Lassen Ausdrücke die allgemeine Form haben, lassen Sie {d1; ...; dn} in e, und führen Sie eine verschachtelte, wechselseitig rekursive Liste von Deklarationen ein (in anderen Sprachen wird das oft letrec genannt) . Der Umfang der Deklarationen ist der Ausdruck e und die rechte Seite der Deklarationen.

(Hervorhebung von mir)

Also in der zweiten let , wo x = x * x , beziehen sich alle x s auf dieselbe Bindung, keine beziehen sich auf die äußere x = 4 Bindung.

    
Matt Fenwick 10.08.2012, 13:13
quelle

Tags und Links