Haskell: Konvertieren zwischen Typklassen
Für diese Daten:
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
Gibt es eine Möglichkeit, Funktionen mit diesem Typ zu implementieren?
conv :: (C1 a, C2 b) => a -> Maybe b
Es sollte @ zurückgebJust . id
für ein Argument des Typs, der eine Instanz von @ iC2
, undNothing
für jeden anderen Typ.
repr
ist injektiv. Ich kann die klasse wechselnC2
aber KlasseC1
befindet sich in einer externen Bibliothek.