Haskell: преобразование между типами классов
Для этих данных:
data A = A
data B = B
class C1 a where repr :: a -> String
instance C1 A where repr _ = "A"
instance C1 B where repr _ = "B"
class C2 a
instance C2 A
Есть ли способ реализовать функцию с этим типом?
conv :: (C1 a, C2 b) => a -> Maybe b
Должно вернутьсяJust . id
для аргумента типа, который является экземпляромC2
, а такжеNothing
для любого другого типа.
repr
является инъективным Я могу сменить классC2
но классC1
находится во внешней библиотеке.