[Haskell-cafe] search Data.Tree.Zipper

Dan Weston westondan at imageworks.com
Mon Mar 8 14:31:25 EST 2010


I think you want

find :: Foldable t => (a -> Bool) -> t a -> Maybe a


Jian Fan wrote:
> Hi,
> 
> There doesn't seem to be a function to search the tree so
> I come up with following function:
> 
> searchTree :: (a -> Bool) -> TreeLoc a -> Maybe (TreeLoc a)
> searchTree pred rootLoc =
>   if pred (getLabel rootLoc) then
>     Just rootLoc
>     else case firstChild rootLoc of
>       Just loc -> case searchTree pred loc of
>         Just loc -> Just loc
>         Nothing -> case right loc of
>           Just rLoc -> searchTree pred rLoc
>           Nothing -> Nothing
>       Nothing -> Nothing
> 
> Which feels quite ugly. Any suggestions? Thanks.
> 
> Jian
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 
> 



More information about the Haskell-Cafe mailing list