Ciao a tutti,
devo definire una funzione che cerchi un elemento (Int) in un albero binario di ricerca.
Mi è stato imposto di comparare gli elementi usando la funzione compare di Ordering:
codice:
compare :: Ord a => a -> a -> Ordering
Ho definito l'albero come:
codice:
data Tree = Leaf Int
| Node Tree Int Tree
deriving (Ordering)
e la funzione per la ricerca come:
codice:
occursT :: Int -> Tree -> Bool
occursT n (Leaf m) = n `compare` m == EQ
occursT n (Node t1 m t2)
| n `compare` m == LT = occursT (t1)
| n `compare` m == GT = occursT (t2)
| otherwise = True
Il problema è che in fase di compilazione, alla riga in cui c'è deriving(Ordering), ottengo questo errore :
codice:
Expected kind ‘k0 -> GHC.Prim.Constraint’,
but ‘Ordering’ has kind ‘*’
In the data declaration for ‘Tree’
Sapreste dirmi cosa sbaglio?
Grazie in anticipo