Haskell Performance Resource विकि-अनुभाग में, आगे बताया नहीं सिफारिश"सख्त रिटर्न" के अर्थशास्त्र क्या हैं?
- उपयोग सख्त रिटर्न (
return $! ...
) जब तक आपको निश्चित रूप से आलसी जरूरत के लिए दिया जाता है।
यह एक अच्छी बात क्यों है? जब ...
-expression (Whnf-) को मजबूर किया गया है तो मजबूर होना चाहिए?
"वाम पहचान" इकाई जी और परिभाषा
f $! x = x `seq` f x
मैं (do
-notation` में) पुनर्लेखन कर सकते हैं को देखते हुए:
do x' <- return $! x
f x'
do x' <- x `seq` return x
f x'
लिए लेकिन ऐसा लगता है कि मैं
नहीं प्राप्त कर सकताdo f $! x
पुनश्च: अगर BangPatterns
-extension उपलब्ध है,
do !x' <- return x
f x'
पहले do
-expression ऊपर दिए गए के रूप में अर्थ की दृष्टि से एक ही है?
मैं देख रहा हूँ द्वारा दिया जाता है ... लेकिन इस 'वापसी $ की उपयोगिता के बारे में क्या कहना है! ... '? क्या यह केवल सख्त monads के लिए समझ में आता है? – hvr
@hvr: यदि मोनड इसके रिटर्न-प्रकार में सख्त है, तो हाँ। निर्माण विशेष रूप से उपयोगी है, मोनैड के लिए जहां आप आम तौर पर मोनड के दुष्प्रभाव का मूल्यांकन करना चाहते हैं, न कि मोनड स्वयं। – fuz
यह एक ब्लॉक ब्लॉक में अंतिम चीज़ के लिए समझ में आता है 'वापसी $! ... 'क्योंकि एक (कॉल) फ़ंक्शन का रिटर्न वैल्यू हमेशा मूल्यांकन किया जाता है। यानी, '... >> = \ x -> $ वापसी! ...', एक बार जब लैम्ब्डा अभिव्यक्ति कहा जाता है तो यह '($!)' एप्लिकेशन का मूल्यांकन करने जा रहा है। – augustss