
On 05/12/12 17:33, Bryan O'Sullivan wrote:
On Wed, Dec 5, 2012 at 8:16 AM, Henning Thielemann
mailto:lemming@henning-thielemann.de> wrote: The same can be asked for
Prelude> :t either (const False) (const True) either (const False) (const True) :: Either a b -> Bool
or
isLeft = isJust . maybeLeft
We at least have evidence that isLeft and isRight are actually present in several packages. That helps this proposal squeak over my bar, so I'm +0 on it.
I think that maybeLeft and maybeRight are interesting, but the burden of proof for "these things solve a problem that actually exists" is a little higher. Consider me -0.01.
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)
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 from me. Cheers, Simon