J'essaie de faire une abstraction dans Haskell98 mais je ne sais pas comment le faire.plusieurs types de paramètres dans les classes de type haskell
Ce que je veux faire est de définir une classe pour les types qui peuvent être convertis en listes.
toList :: a -> [b]
Mais je ne sais pas comment définir une classe pour cette méthode. J'ai apporté les trois idées suivantes:
class ToList a b where
toList :: a -> [b]
class ToList a where
toList :: a -> [b]
class ToList a where
toList :: a b -> [b]
Le premier ne fonctionne pas parce que haskell98 ne permet pas de classes de paramètres multiples.
La seconde ne fonctionne pas car b dépend de a et ne peut pas être implémenté pour tout b.
La troisième ne fonctionne pas non plus parce que je ne sais pas comment instancier la classe avec un type où 'b' n'est pas le dernier paramètre de type.
data HTree a b = Nil | Node a b (HTree a b) (HTree a b)
toList Nil = []
toList Node x y l r = toList l ++ [(x,y)] ++ toList r
ou
toList Nil = []
toList Node x y l r = toList l ++ [x] ++ toList r
Comment pourrais-je faire quelque chose comme ça?