निम्नलिखित कोड GHC 7.8.4 में काम करता है:मजबूर किया हुआ GHC साथ 7.10
import Data.Coerce
coerceNewtype :: (Coercible (o r) (n m' r)) => [o r] -> [n m' r]
coerceNewtype = coerce
लेकिन 7.10 में मैं त्रुटि मिलती है:
Couldn't match representation of type ‘n m' r’ with that of ‘o r’
arising from trying to show that the representations of
‘[o r]’ and
‘[n m' r]’ are the same
Relevant role signatures: type role [] representational
मैं काफी यकीन है कि जहां जादू में क्या होता है नहीं कर रहा हूँ Data.Coerce
, लेकिन coerce
पर हस्ताक्षर (Coercible a b) => a -> b
है, मुझे लगता है कि ऊपर दिया गया कार्य अभी भी 7.10 में संकलित होना चाहिए। कोई विचार क्यों व्यवहार अलग है, या मैं 7.10 में पॉलिमॉर्फिक प्रकारों के साथ सहक्रिया का उपयोग कैसे कर सकता हूं?
टाइप हस्ताक्षर को '(कोर्सीबल ए बी, ए ~ (ओ आर), बी ~ (एन एम' आर)) => [ओ आर] -> [एन एम 'आर]' और त्रुटि दूर हो जाती है। यह ghc-7.10.1 पर है। यह मेरे लिए एक बग की तरह दिखता है। – user2407038
एचआरएम, यह एक बग होने के लिए बहुत आसान लग रहा था। रिपोर्ट किया गया [यहां] (https://ghc.haskell.org/trac/ghc/ticket/10428) – crockeea
क्या आप में से कोई भी इन टिप्पणियों को उत्तर में बदल सकता है ताकि प्रश्न अनुत्तरित के रूप में दिखाई न दे? @ user2407038 –