लाता है मैं seq
की परिभाषा की तलाश में था और इस अजीबता में आया। इन सभी कार्यों में समान/समान परिभाषा क्यों होती है?प्रस्ताव के लिए स्रोत कोड के माध्यम से जाकर अजीबता
seq :: a -> b -> b
seq = let x = x in x
inline :: a -> a
inline = let x = x in x
lazy :: a -> a
lazy = let x = x in x
स्रोत कोड में इस परिभाषा के साथ कई और हैं। क्या चल रहा है?
क्या कोई कारण 'त्रुटि' * को 'seq' और दोस्तों से पहले परिभाषित नहीं किया जा सकता है? –
'त्रुटि' को 'फेंक (त्रुटि कॉल संदेश)' के रूप में परिभाषित किया गया है, इसलिए इसके लिए आपको 'अपवाद' तंत्र और 'टाइप करने योग्य' की आवश्यकता है। इसे 'अपवाद' ढांचे के बाहर परिभाषित किया जा सकता है, सीधे 'raise #' आदिम का उपयोग करके, जहां तक मुझे पता है, लेकिन यह अन्य 'अपवाद' के साथ फिट होना अच्छा है। तो 'ghc-prim' छोटा रखने के लिए, केवल' raise # 'प्रदान करता है, अधिक विस्तृत सामग्री 'आधार' में जाती है। संक्षेप में, यह _could_ पहले परिभाषित किया गया था, लेकिन यह उतना अच्छा नहीं है, और ऐसा करने का कोई अच्छा कारण नहीं है, 'जीएचसी.प्रिम' स्रोत वैसे भी एक अप्रयुक्त डमी होगा। –