[Haskell-cafe] Re: search Data.Tree.Zipper

Jian Fan abemud at gmail.com
Tue Mar 9 09:34:21 EST 2010


Well, TreeLoc comes from Data.Tree.Zipper which comes from rosezipper
packge. Thank you and MightyByte. Its much improved now.

Jian

Yitzchak Gale <gale at sefer.org> wrote:
> Jian Fan wrote:
>> I somehow cannot figure this out. Tree is Foldable so I
>> can use "find" on it. But how can I use find on TreeLoc?
>> Am I missing something obvious?
> 
> But what exactly is a "TreeLoc"? Hoogle doesn't know about
> it. If you created it yourself, you haven't showed us
> how you defined it or what you are using it for.
> 
> In any case, below is one way to simplify the code you posted.
> It is only a small simplification, but it is about the best I
> can do without seeing the details of what you are trying to do.
> 
> Try posting this kind of question to the "haskell-beginners"
> mailing list. There are people there who are much better at
> answering this kind of question.
> 
> One thing that made it hard to follow your code was your
> repeated use of "loc", one shadowing the other. Try to avoid
> that.
> 
> searchTree :: (a -> Bool) -> TreeLoc a -> Maybe (TreeLoc a)
> searchTree pre rootLoc
> | pred (getLabel rootLoc) = Just rootLoc
> | otherwise               = do
>     loc <- firstChild rootLoc
>     searchTree pred loc `mplus` (right loc >>= searchTree pred)
> 
> Regards,
> Yitz



More information about the Haskell-Cafe mailing list