haskell - Same Kinds for List of Int compared to List of Int -> Int? -


क्यों इन दोनों के समान प्रकार हैं?

  ghci & gt; : K [इंट] [इंट] :: * घची & gt; : K [इंट - & gt; Int] [इंट - & gt; Int] :: *  

संपादित करें प्रति @ 's सहायक टिप्पणी।

मुझे समझ में नहीं आता प्रकार ठीक है, इसलिए मेरे पास ऐसा कोई अच्छा आधार नहीं है जो उम्मीदवारों की अपेक्षाओं के लिए प्रकार में भिन्न हो सकते हैं।

ठीक है, चलो जांचें।

  Int :: * [] :: * - & gt; *  

इसलिए जब आप int को [] टाइप कन्स्ट्रक्टर को लागू करते हैं:

  [] Int :: *  

जो लिखने का एक और कानूनी तरीका है

  [int] :: *  

ठीक है, यह एक बहुत आसानी से अनुसरण करता है।

  Int :: * (- & gt;) :: * - & gt; * - & gt; * [] :: * - & gt; * (- & gt;) Int :: * - & gt; * (- & gt;) Int Int * *  

कौन सा के समान है

  int - & gt; इंट :: *  

और इसलिए, ऊपर के रूप में एक ही तर्क से,

  [int -> Int] :: *  

लेकिन यहाँ एक रहस्य है .. [] के प्रकार पर एक करीब से देखो।

  [] :: * - & gt; *  

इसका अर्थ है कि यह एक ऐसी संहिता त्रुटि है, जो कि किसी भी प्रकार को ऐसी सूची के अंदर डालती है जो कि * प्रकार के नहीं है। और जब आप इसे कुछ प्रकार के * के साथ प्रदान करते हैं, तो परिणाम हमेशा की तरह * होगा।

आपका भ्रम अलग स्तरों को न रखने से आता है कई, कई अलग-अलग प्रकार के समान होते हैं आखिर, दयालु * अधिक या कम मतलब है "इस प्रकार के मूल्य हो सकते हैं" (कुछ मामूली अपवाद हैं, लेकिन वे कम-स्तरीय आंतरिक चीजें हैं जिन्हें आपको देखने के लिए काफी कठिन काम करना है।) यदि आपके पास किसी प्रकार के मूल्य हो सकते हैं, तो यह एक बहुत अच्छी शर्त है कि प्रकार की तरह *


Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

java - Gradle dependencies: compile project by relative path -

ruby on rails - Object doesn't support #inspect when used with .include -