Je débute en haskell, incompréhension sur les classes
Bonjour voilà j'ai ce petit bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
data Ord a => Dictionary a b = Dictionary [(a, b)]
get_ :: Eq a => [(a, b)] -> a -> Maybe b
get_ [] _ = Nothing
get_ ((k, v) : kvs) s = if s == k
then Just v
else get_ kvs s
get :: Dictionary a b -> a -> Maybe b
get (Dictionary d) k = get_ d k
main = do return () |
et mon compilateur (GHC version 6.8.3) me pète le message d'erreur suivant
Code:
1 2 3
|
Could not deduce (Ord a) from the context ()
arising from a use of `Dictionary' at bencoding.hs:10:5-16 |
donc j'ai essayé de mettre
Code:
get :: Eq a => Dictionary a b -> a -> Maybe b
et pareil, là seule solution que j'ai est de mettre
Code:
get :: Ord a => Dictionary a b -> a -> Maybe b
Et je ne comprends pas pourquoi. Quand j'ai déclaré le type Dictionary a b j'ai précisé que a devait être de la classe Ord (qui hérite de Eq) alors pourquoi dois-je le préciser à chaque utilisation ? (je n'ai pas mis juste Eq car j'aurais le besoin de garder la liste dans un état trié).
Après je débute en haskell et suis ouvert à toute remarque.
Merci