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