diff --git a/docs/Functor.md b/docs/Functor.md index 44c441905..40a80c248 100644 --- a/docs/Functor.md +++ b/docs/Functor.md @@ -35,6 +35,7 @@ void :: Functor f => f a -> f () ```haskell foreach :: Functor f => f a -> (a -> b) -> f b +(<&>) :: Functor f => f a -> (a -> b) -> f b ``` diff --git a/src/Protolude.hs b/src/Protolude.hs index 20ac9aba8..3d2cc1a8f 100644 --- a/src/Protolude.hs +++ b/src/Protolude.hs @@ -16,7 +16,7 @@ module Protolude ( print, throwIO, throwTo, - foreach, + foreach, (<&>), show, pass, guarded, @@ -570,6 +570,13 @@ throwTo tid e = liftIO (Control.Exception.throwTo tid e) foreach :: Functor f => f a -> (a -> b) -> f b foreach = flip fmap +-- | Infix version of foreach. +-- +-- @<&>@ is to '<$>' what '&' is to '$'. +infixl 4 <&> +(<&>) :: Functor f => f a -> (a -> b) -> f b +(<&>) = foreach + -- | Do nothing returning unit inside applicative. pass :: Applicative f => f () pass = pure ()