Ich versuche, Abstraktion in Haskell98 zu tun, aber weiß nicht, wie es geht.mehrere Typparameter in haskell type-Klassen
Was ich tun möchte, ist eine Klasse für Typen definieren, die in Listen umgewandelt werden können.
toList :: a -> [b]
Aber ich weiß nicht, wie man eine Klasse für diese Methode definiert. Ich habe die folgenden drei Ideen angesprochen:
Die erste funktioniert nicht, weil Haskell98 mehrere Parameterklassen nicht zulässt.
Der zweite funktioniert nicht, weil b von a abhängt und nicht für jeden b implementiert werden kann.
Die dritte funktioniert auch nicht, weil ich nicht weiß, wie man die Klasse mit einem Typ instanziiert, wobei 'b' nicht der letzte Typparameter ist.
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
oder
toList Nil = []
toList Node x y l r = toList l ++ [x] ++ toList r
Wie würde ich so etwas tun?