चलें कहते हैं कि मैं इस कार्यक्रमप्रकार निष्कर्ष - a0
{-# LANGUAGE GADTs #-}
data My a where
A :: Int -> My Int
B :: Char -> My Char
main :: IO()
main = do
let x = undefined :: My a
case x of
A v -> print v
-- print x
ठीक संकलित है अछूत है।
लेकिन जब मैं print x
में टिप्पणी, मैं मिलता है:
gadt.hs: line 13, column 12:
Couldn't match type ‘a0’ with ‘()’
‘a0’ is untouchable
inside the constraints (a1 ~ GHC.Types.Int)
bound by a pattern with constructor
Main.A :: GHC.Types.Int -> Main.My GHC.Types.Int,
in a case alternative
at /home/niklas/src/hs/gadt-binary.hs:13:5-7
Expected type: GHC.Types.IO a0
Actual type: GHC.Types.IO()
In the expression: System.IO.print v
In a case alternative: Main.A v -> System.IO.print v
मैं लाइन 13 (A v -> print v
) में इस त्रुटि क्यों मिलता है केवल print x
लाइन में के बजाय?
मैंने सोचा कि पहली घटना प्रकार को निर्धारित करना चाहिए।
कृपया मुझे प्रबुद्ध :)
बहुत बढ़िया जवाब लिख कर। – nh2