Haskell: Convertendo entre classes de tipos

Para esses dados:

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

Existe uma maneira de implementar a função com esse tipo?

conv :: (C1 a, C2 b) => a -> Maybe b

Deve retornarJust . id para argumento do tipo que é uma instância deC2eNothing para qualquer outro tipo.

repr é injetivo. Eu posso mudar de classeC2 mas classeC1 está na biblioteca externa.

questionAnswers(2)

yourAnswerToTheQuestion