Haskell: Posible solución: agregue (Eq a) al contexto de

Soy un poco nuevo en Haskell y me cuesta entender qué tiene de malo mi código aquí.

Esto es lo que se supone que debo hacer:
onsidere la siguiente definición de un árbol binario

data BinaryTree a = Empty | Node a (BinaryTree a) (BinaryTree a)  

Considere la función de reflejo que forma la imagen especular de un árbol binario intercambiando hacia la izquierda y hacia la derecha completamente hacia abajo

reflect :: BinaryTree a -> BinaryTree a  
reflect Empty = Empty  
reflect (Node x l r) = Node x (reflect r) (reflect l)  

Escriba una función areMirrorImages que determina si dos árboles binarios t y u satisfacen t = reflejan u. La función no debe construir nuevos árboles, por lo que no debe llamar a reflect o Node; aunque puede usar Node en patrones.

Aquí está lo que he escrito:

areMirrorImages :: BinaryTree a -> BinaryTree a -> Bool  
areMirrorImages Empty Empty = True  
areMirrorImages (Node _ _ _) Empty = False  
areMirrorImages Empty (Node _ _ _) = False  
areMirrorImages (Node x l r) (Node y ll rr)  
    | x==y = ((areMirrorImages l rr) && (areMirrorImages r ll))  
    | otherwise = False  

Cuando intento ejecutarlo, aparece el siguiente error en la línea 49:
No podría deducir (Eq a) del contexto () que surge del uso de '=='
orrección posible: agregue (Eq a) al contexto de la firma de tipo para 'areMirrorImages'
En la expresión: x == y

Estoy confundido en cuanto a por qué recibo este error e intenté encontrar soluciones en línea, pero hasta ahora no he encontrado nada. Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta