[Haskell-cafe] nested maybes
Udo Stenzel
u.stenzel at web.de
Sun Feb 4 16:50:23 EST 2007
J. Garrett Morris wrote:
> On 2/4/07, Udo Stenzel <u.stenzel at web.de> wrote:
> >> exists s wmap = isJust $ Map.lookup (sort s) wmap >>= find (== s) . snd
>
> If you're going to write it all on one line, I prefer to keep things
> going the same direction:
Hey, doing it this way saved me a full two keystrokes!!!1
Sure, you're right, everything flowing in the same direction is usually
nicer, and in central Europe, that order is from the left to the right.
What a shame that the Haskell gods chose to give the arguments to (.)
and ($) the wrong order!
> exists s wmap = isJust $ find (==s) . snd =<< Map.lookup (sort s) wmap
>
> Normally, from there I would be tempted to look for a points-free
> implementation, but in this case I have a strong suspicion that would
> simply be unreadable.
Well, depends on whether we are allowed to define new combinators. I
sometimes use
-- Kleisli composition
infixl 1 @@
(@@) :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
f @@ g = join . liftM g . f
and the resulting
> exists s = Map.lookup (sort s) @@ find (== s) . snd >>> isJust
isn't all that bad. (To be read as: one can get used to it.) I also
think, (@@) and (>>>) belong in the Prelude and (>>>) at type ((a->b) ->
(b->c) -> (b->c)) should be known under a shorter name. Unfortunately,
everything short but (?) is already taken...
Of course, the remaining variable "s" could also be transformed away,
but that's really pointless.
-Udo
--
"Never confuse motion with action." -- Ernest Hemingway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20070204/5f698560/attachment.bin
More information about the Haskell-Cafe
mailing list