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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage