Haskell: Conversión entre clases de tipos
Para estos datos:
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
¿Hay alguna manera de implementar funciones con este tipo?
conv :: (C1 a, C2 b) => a -> Maybe b
Debería volverJust . id
para argumento de tipo que es una instancia deC2
yNothing
para cualquier otro tipo
repr
es inyectiva Puedo cambiar de claseC2
pero claseC1
Está en una biblioteca externa.