कहें कि मेरे पास निम्न (गलत) कोड है।हास्केल पहुंच योग्य कोड बग?
data A a b where
APure :: (A a b)
AApply :: A (A b c) c
test :: (A a b) -> a -> b
test (APure) a = a
test AApply a = undefined
GHC तो मुझे इस त्रुटि दे देंगे:
Couldn't match type `b' with `A b1 b'
`b' is a rigid type variable bound by
the type signature for test :: A a b -> a -> b
Inaccessible code in
a pattern with constructor
AApply :: forall c b. A (A b c) c,
in an equation for `test'
In the pattern: AApply
In an equation for `test': test AApply a = undefined
यह त्रुटि संदेश पूरी तरह से गलत नहीं है? त्रुटि में एपली के साथ कुछ लेना देना नहीं है।
यदि आप इसे 'ए (ए बी सी) सी' के रूप में घोषित करते हैं तो' एपली 'सामान्य प्रकार' ए ए बी 'होना चाहिए? ऐसा लगता है कि आप 'concat' को परिभाषित कर रहे थे :: [ए] -> [बी] '' concat '= concat' के रूप में: हास्केल 'b" को' b '' को एकीकृत करने के लिए कैसे जा रहा है? – leftaroundabout
हां, यह अनजान है। शायद आपको [एक बग फाइल करना चाहिए] (http://hackage.haskell.org/trac/ghc/newticket?type=bug)। –
@ बाएंअराउंडबाउट मैं वास्तव में समझ में नहीं आता कि आपका क्या मतलब है, लेकिन वह मामला पूरी तरह से सही है। जीएडीटी के साथ पैटर्नमैचिंग पर पढ़ें। – nulvinge