Ausführen dieses Codes:
%Vor%im Interpreter:
%Vor% hängt mit sehr geringer CPU-Auslastung. Warum ist das? Ich habe j = 16
erwartet.
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.