Proposal: Add isLeft/isRight to Data.Either

Jon Fairbairn jon.fairbairn at cl.cam.ac.uk
Fri Dec 14 10:59:59 CET 2012


Simon Marlow <marlowsd at gmail.com> writes:
> I needed maybeRight just the other day, as a matter of fact.
>
> timeout n m
>     | n <  0    = fmap Just m
>     | n == 0    = return Nothing
>     | otherwise = do
>         r <- race (threadDelay n) m
>         case r of
>           Left _  -> return Nothing
>           Right a -> return (Just a)
>
> would have been
>
> timeout n m
>     | n <  0    = fmap Just m
>     | n == 0    = return Nothing
>     | otherwise = fmap maybeRight $ race (threadDelay n) m
>
> (I'd rather not use `either`, it's one of those functions
> whose type I always have to look up)

Use (|||) from Control.Arrow instead. The thing on the left is
applied to Lefts, the thing on the right to Rights.

>> In general, I feel we have a fondness for a few too many near-trivial
>> one-liners that make libraries bigger and harder to navigate, without
>> really adding much expressivity.
>
> I have a lot of sympathy for this view.  Hence, only
>
>   +0.3

and at most -1 from me, naturally.

-- 
Jón Fairbairn                                 Jon.Fairbairn at cl.cam.ac.uk




More information about the Libraries mailing list