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 deC2yNothing para cualquier otro tipo

repr es inyectiva Puedo cambiar de claseC2 pero claseC1 Está en una biblioteca externa.

Respuestas a la pregunta(2)

Su respuesta a la pregunta