साबित हो रहा है कि λ x। L the Ω is लक्ष्यों में से एक है, अब्रामस्की ने अपने आलसी लंबोदा पथरी सिद्धांत ( अपने कागज के पृष्ठ 2 , पहले से ही उदय रेड्डी द्वारा उद्धृत) के लिए निर्धारित किया है, क्योंकि वे दोनों कमजोर सिर सामान्य रूप में हैं। 2.7 की परिभाषा के अनुसार, वह स्पष्ट रूप से चर्चा करता है कि एटा-कमी λ x। एम एक्स → एम आमतौर पर मान्य नहीं है, लेकिन यह संभव है अगर एम हर वातावरण में समाप्त हो जाए। इसका मतलब यह नहीं है कि एम को कुल फ़ंक्शन होना चाहिए - केवल इसका मूल्यांकन करना होगा कि एम को समाप्त करना चाहिए (उदाहरण के लिए, मेमने को कम करके)।
आपका प्रश्न व्यावहारिक चिंताओं (प्रदर्शन) से प्रेरित लगता है। हालांकि, भले ही हास्केल रिपोर्ट पूरी तरह से स्पष्ट से कम हो सकती है, मुझे संदेह है कि λ x के बराबर। Implementation implementationwith; हास्केल के एक उपयोगी कार्यान्वयन का उत्पादन करेगा; यह हास्केल '98 को लागू करता है या नहीं, यह बहस का मुद्दा नहीं है, लेकिन टिप्पणी को देखते हुए, यह स्पष्ट है कि लेखकों ने इसे करने का इरादा किया है।
अंत में, कैसे मनमाने ढंग से इनपुट प्रकार के लिए तत्वों को उत्पन्न करने के लिए seq है? (मुझे पता है कि क्विकचेक उस के लिए आर्बिटवर्ल्ड टाइपकास्ट को परिभाषित करता है, लेकिन आपको इस तरह की बाधाओं को जोड़ने की अनुमति नहीं है)। यह पैरामीट्रिकिटी का उल्लंघन करता है।
अपडेट किया गया : मैंने इस अधिकार को कोड करने का प्रबंधन नहीं किया (क्योंकि मैं हास्केल में इतना धाराप्रवाह नहीं हूं), और इसे ठीक करने के लिए नेस्टेड runST
क्षेत्रों की आवश्यकता होती है। मैंने इस तरह के मनमाने तत्वों को बचाने के लिए एक एकल संदर्भ सेल (एसटी मोनद में) का उपयोग करने की कोशिश की, उन्हें बाद में पढ़ा, और उन्हें सार्वभौमिक रूप से उपलब्ध कराया। पैरामीट्रिकिटी यह साबित करती है कि break_parametricity
नीचे परिभाषित नहीं किया जा सकता है (नीचे लौटने के अलावा, उदाहरण के लिए एक त्रुटि), जबकि यह उन तत्वों को पुनर्प्राप्त कर सकता है जो आपके प्रस्तावित seq उत्पन्न करेगा।
import Control.Monad.ST
import Data.STRef
import Data.Maybe
produce_maybe_a :: Maybe a
produce_maybe_a = runST $ do { cell <- newSTRef Nothing; (\x -> writeSTRef cell (Just x) >> return x) `seq` (readSTRef cell) }
break_parametricity :: a
break_parametricity = fromJust produce_maybe_a
मुझे यह स्वीकार करना होगा कि मुझे यहां आवश्यक पैरामीट्रिकिटी प्रमाण को औपचारिक रूप से समझने में थोड़ी फजी है, लेकिन हास्केल में पैरामीट्रिकिटी का यह अनौपचारिक उपयोग मानक है; लेकिन मुझे डेरेक ड्रेयर के लेखन से पता चला कि इन अंतिम वर्षों में आवश्यक सिद्धांत पर तेजी से काम किया जा रहा है।
संपादन:
- मुझे यह भी निश्चित नहीं है कि क्या आपको उन एक्सटेंशनों की आवश्यकता है, जिनका अध्ययन एमएल-जैसी, अनिवार्य और अप्रयुक्त भाषाओं के लिए किया जाता है, या क्या पैरामीट्रिकिटी के शास्त्रीय सिद्धांत हास्केल को कवर करते हैं।
- इसके अलावा, मैंने डेरेक ड्रेयर का उल्लेख केवल इसलिए किया क्योंकि मैं केवल बाद में उदय रेड्डी के काम में आया था - मैंने इसके बारे में हाल ही में "रेनॉल्ड्स का सार" से सीखा। (मैंने केवल पिछले महीने या इतने पर पैरामीट्रिकिटी पर साहित्य पढ़ना शुरू किया है)।