GHC docs से
:
"उठाया" प्रकार का मतलब है कि प्रकार के मामले नीचे हो सकता है।
"बॉक्सिंग" प्रकार का मतलब है कि एक मूल्य के एक ढेर वस्तु के लिए एक सूचक का प्रतिनिधित्व करती है।
कुछ निहितार्थ में शामिल हैं:
- एक उठाया प्रकार बॉक्सिंग जाता है (लेकिन जरूरी नहीं कि दूसरी तरह - अधिक के लिए ऊपर दिए गए लिंक की जाँच)
- अनबॉक्स्ड प्रकार Thunks नहीं हो सकता (चूँकि उनका संकेत दिए गए हैं आंकड़ों के बारे में बताते हुए कि मूल्य का उत्पादन कैसे करें), इसलिए कोई आलस्य नहीं है। वे वास्तव में मूल्यों को पकड़ते हैं। इसका मतलब यह भी है कि वे तेज़ हो सकते हैं।
- पॉलिमॉर्फिज्म अनलिमिटेड प्रकारों के साथ नहीं खेलता है। जब भी आप एक प्रकार परिवर्तनीय देखते हैं, तो शामिल सभी प्रकार अनलिमिटेड होते हैं।
id 0 :: Int#
की तरह कुछ काम नहीं करता है। this answer देखें कि आप कैसे देख सकते हैं (जीएचसी 8.0 के बाद से) कभी-कभी इस पर घूमते हैं।
ध्यान दें कि आप MagicHash
और UnboxedTuples
एक्सटेंशन का उपयोग (हालांकि मुझे नहीं लगता कि वे अच्छी तरह से GHCi के साथ खेलते हैं) GHC में unlifted उत्पादों बना सकते हैं:
{-# LANGUAGE MagicHash, UnboxedTuples #-}
extGCD :: Int -> Int -> (# Int, Int, Int #)
extGCD a 0 = (# 1, 0, a #)
extGCD a b = let (q, r) = a `quotRem` b
(# s, t, g #) = extGCD b r
in (# t, s - q * t, abs g #)
इस विस्तार के अपवाद के साथ
, मेरा मानना है कि आप पाएंगे कि केवल अनलिमिटेड प्रकार GHC.Exts
में हैं और वे प्राचीन प्रकार हैं। कस्टम अनलिफ्ट किए गए डेटा प्रकारों को जीएचसी here में एकीकृत करने की अनुमति देने के लिए कुछ चर्चा है।
एक अंतिम टिप्पणी: जबकि उठाए गए प्रकारों की तरह *
है, बिना प्रकार के प्रकार #
हैं। टिप्पणियों में जुड़े प्रश्न के लिए This answer इस बारे में अधिक जानकारी में जाता है।
संबंधित प्रश्न: https://stackoverflow.com/questions/27095011/what-exactly-is-the-kind-in-haskell – danidiaz