2012-08-10 11 views
8

इस कोड चल रहा हैइस कोड को 'let` bindings को छायांकित करने का उपयोग क्यों किया जाता है? दुभाषिया में</p> <pre><code>j = let x = 4 in let x = x * x in x </code></pre> <p>:

ghci> j 
... no response ... 

बहुत कम CPU उपयोग के साथ लटका हुआ है। ऐसा क्यों है? मुझे j = 16 की उम्मीद थी।

उत्तर

16

हास्केल रिपोर्ट के अनुसार, section 3.12:

भाव सामान्य रूप देना {d1 करते हैं; ...; डीएन} ई में, और घोषणाओं की एक नेस्टेड, लेक्सिकली-स्कोप्ड, परस्पर-रिकर्सिव सूची (जिसे अक्सर अन्य भाषाओं में लेट्रेक कहा जाता है) पेश करें। घोषणाओं का दायरा अभिव्यक्ति ई और घोषणाओं के दाहिने हाथ की तरफ है।

(जोर मेरा)

दूसरा let, जहां x = x * x, सभी x रों एक ही बंधन का उल्लेख में

तो, कोई भी बाहरी x = 4 का उल्लेख बंधन।

+1

अपने खुद के प्रश्न का उत्तर दें: अच्छा! ^^ –

संबंधित मुद्दे