तो, करने के लिए अपने चल रहे प्रयास में छोटे हास्केल व्यायाम के माध्यम से आधे को समझने करी-हावर्ड, मैं इस बिंदु पर अटक मिल गया है:क्या जीएडीटी जीएचसी में टाइप असमानताओं को साबित करने के लिए इस्तेमाल किया जा सकता है?
{-# LANGUAGE GADTs #-}
import Data.Void
type Not a = a -> Void
-- | The type of type equality proofs, which can only be instantiated if a = b.
data Equal a b where
Refl :: Equal a a
-- | Derive a contradiction from a putative proof of @Equal Int [email protected]
intIsNotChar :: Not (Equal Int Char)
intIsNotChar intIsChar = ???
जाहिर प्रकार Equal Int Char
, कोई (गैर नीचे) निवासी हैं और इस प्रकार अर्थात् वहां absurdEquality :: Equal Int Char -> a
फ़ंक्शन होना चाहिए ... लेकिन मेरे जीवन के लिए मैं undefined
का उपयोग करने के अलावा किसी अन्य को लिखने का कोई तरीका नहीं समझ सकता।
तो या तो:
- मैं कुछ याद कर रहा हूँ, या
- भाषा है कि इस एक असंभव कार्य करता है में से कुछ सीमा है, और मैं समझता हूँ कि यह क्या है में कामयाब नहीं किया है।
मुझे संदेह है कि उत्तर ऐसा कुछ है: संकलक इस तथ्य का फायदा उठाने में असमर्थ है कि Equal
ऐसे रचनाकार नहीं हैं जिनके पास = बी नहीं है। लेकिन अगर ऐसा है, तो यह क्या सच बनाता है?
देखें: http://typesandkinds.wordpress.com/2012/12/01/decidable-propositional-equality-in-haskell/ – glaebhoerl
@dbaupp: डुप्लिकेट नहीं - वह प्रश्न कुछ भी करने की कोशिश नहीं कर रहा है असमानता का सबूत। –
@ सीए.एमसीकैन, आह हाँ, मुझे लगता है कि मैं जंगली आरोपों के आसपास फेंकने से पहले मुझे और अधिक बारीकी से पढ़ना चाहिए। :) – huon