
Ryan Temple schrieb:
I'm making a general purpose N-ary tree and im coming up with "unexpected '=' on line 17" as an error. I have spent a fair while trying to work out why this isn't accepting the case that an Empty gtree returns false for any member search. i realise this is probably a very trivial error but any help would be appreciated:
module GTrees where
data Gtree = Empty | Leaf String | Node String [Gtree] deriving (Show)
You may want to consider a node with a singleton list as "Leaf" and a node with an empty list as "Empty" (if the additional "String" for "Node" does not harm for an empty tree).
--Tests if a given string is a member of the tree
gtreeMember :: (Ord a) => a -> Gtree a -> Bool gtreeMember y Empty = False -- line 17 gtreeMember y (Leaf x) = (x==y) gtreeMember y (Node x tree) |x==y = True |otherwise gtreeMember tree
After proper indentation and deciding if Gtree is polymorphic or not in the signature and data type, this last line will not work: 1. there must be a "=" following "otherwise" 2. gtreeMember expects two arguments 3. the variable "tree" is a list of Gtrees whereas gtreeMember only works for a single Gtree. HTH Christian