2015-05-18 5 views
16

निम्नलिखित कोड 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 में पॉलिमॉर्फिक प्रकारों के साथ सहक्रिया का उपयोग कैसे कर सकता हूं?

+2

टाइप हस्ताक्षर को '(कोर्सीबल ए बी, ए ~ (ओ आर), बी ~ (एन एम' आर)) => [ओ आर] -> [एन एम 'आर]' और त्रुटि दूर हो जाती है। यह ghc-7.10.1 पर है। यह मेरे लिए एक बग की तरह दिखता है। – user2407038

+5

एचआरएम, यह एक बग होने के लिए बहुत आसान लग रहा था। रिपोर्ट किया गया [यहां] (https://ghc.haskell.org/trac/ghc/ticket/10428) – crockeea

+1

क्या आप में से कोई भी इन टिप्पणियों को उत्तर में बदल सकता है ताकि प्रश्न अनुत्तरित के रूप में दिखाई न दे? @ user2407038 –

उत्तर

2

आपके कोड में कुछ भी गलत नहीं है।

त्रुटि प्रकार-परीक्षक में bug की वजह से है। मुद्दा ट्रैकर का कहना है कि यह जीएचसी 7.11 में तय किया जाएगा।


पोस्टिंग बस, एक जवाब प्रदान करने के लिए के बाद से मूल लेखक एक पोस्ट नहीं है। यदि आप चाहें तो विवरण जोड़ने के लिए स्वतंत्र महसूस करें (और सक्षम हैं)।

संबंधित मुद्दे