[Haskell-beginners] Re: N-ary tree search problems

Christian Maeder Christian.Maeder at dfki.de
Fri Nov 6 05:00:51 EST 2009


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


More information about the Beginners mailing list