Я использую следующий класс типов:
module T where
class T a where
v :: a
Реализованный мной экземпляр T Int
:
import T
import A (av)
instance T Int where
v = 0
main = putStrLn (av ++ show v)
И модуль, значение из которого я хочу использовать, у которого также есть экземпляр T Int
.
module A where
import T
instance T Int where
v = 0
av = "value from A"
Проблема в том, что это не работает:
$ runghc Main.hs
Main.hs:4:9:
Duplicate instance declarations:
instance T Int -- Defined at Main.hs:4:9-13
instance T Int -- Defined at A.hs:3:9-13
Haskell жалуется, что для одного и того же экземпляра есть 2 объявления. Как я могу сказать ему не импортировать экземпляр из B
, или объединить оба экземпляра, или использовать только экземпляр из Main
?
T
илиB
, но я хочу использовать значение изB
, и я хочу создать экземплярT
. - person Dog   schedule 08.05.2013newtype
оболочку существующего типа и вместо этого написать свой экземпляр дляnewtype
. - person hammar   schedule 08.05.2013