私は任意のtree.Andでいくつかの数字の出現数を見つけたいと思いますが、ここに私のコードですが、なぜそれが起こるのかわからないエラーが出ます。haskellのバイナリツリー内の変数の出現数を調べる
ERROR "treeExample.hs":95 - Cannot infer instance
*** Instance : Eq (Tree a)
*** Expression : occurst
入力出力がなければなりません:
data Tree a = Empty | Node (a ,Tree a,Tree a) deriving (Show)
occurst _ Empty = 0 -- this line occurs error
occurst a (Node (x,left,right)) = if x==Empty then 0
else if a==x then 1 + (occurst a left) + (occurst a right)
else (occurst a left) + (occurst a right)
j=let t = Node (3 , Node (2 , Node (1 , Empty , Empty) , Node (1 , Empty , Empty)),Node (1 , Node (2 , Node (1 , Empty , Empty) , Node (1 , Empty , Empty)),Node (1,Empty,Empty)))
in occurst 1 t
エラーメッセージということです
occurst 1 t -> 6
occurst 2 t -> 2
occurst 3 t ->1
occurst 4 t ->0
なぜ 'Node'はタプルを必要としますか? 'Node a(Tree a)(Tree a)'の何が問題なのですか? – pat