[Haskell-beginners] Re: maybe use for functors or arrows?
Heinrich Apfelmus
apfelmus at quantentunnel.de
Sun Jun 27 03:59:42 EDT 2010
Michael Mossey wrote:
> Is there a way to write the function
>
> process :: [(Location,Item)] -> [(Location,ValuableItem)]
>
>
> given a function indicating which Item's to keep
>
> transform :: Item -> Maybe ValuableItem
>
> using functors and arrows? The value for location stays with any item
> that is kept.
>
> What I have is
>
> process inp = catMaybes (map g inp)
> where g (l,i) = case transform i of
> Nothing -> Nothing
> Just v -> Just (l,v)
>
> This looks like an arrow situation to me because you want to make a
> function that acts on the second value in a tuple, and a little bit like
> a Maybe functor.
import Control.Arrow ((***))
process =
catMaybes . map (uncurry (liftM2 (,)) . (return *** transform))
Whether this is more readable is another question.
Regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
More information about the Beginners
mailing list