$ package:universum

Application operator. This operator is redundant, since ordinary application (f x) means the same as (f $ x). However, $ has low, right-associative binding precedence, so it sometimes allows parentheses to be omitted; for example:
f $ g $ h x  =  f (g (h x))
It is also useful in higher-order situations, such as map ($ 0) xs, or zipWith ($) fs xs. Note that ($) is representation-polymorphic in its result type, so that foo $ True where foo :: Bool -> Int# is well-typed.
Infix application.
f :: Either String $ Maybe Int
=
f :: Either String (Maybe Int)
Stricter version of $ operator. Default Prelude defines this at the toplevel module, so we do as well.
>>> const 3 $ Prelude.undefined
3

>>> const 3 $! Prelude.undefined
*** Exception: Prelude.undefined
...
the deep analogue of $!. In the expression f $!! x, x is fully evaluated before the function f is applied to it.
Flipped version of <$.

Examples

Replace the contents of a Maybe Int with a constant String:
>>> Nothing $> "foo"
Nothing

>>> Just 90210 $> "foo"
Just "foo"
Replace the contents of an Either Int Int with a constant String, resulting in an Either Int String:
>>> Left 8675309 $> "foo"
Left 8675309

>>> Right 8675309 $> "foo"
Right "foo"
Replace each element of a list with a constant String:
>>> [1,2,3] $> "foo"
["foo","foo","foo"]
Replace the second element of a pair with a constant String:
>>> (1,2) $> "foo"
(1,"foo")
Alias for fmap . fmap. Convenient to work with two nested Functors.
>>> negate <<$>> Just [1,2,3]
Just [-1,-2,-3]
Replace all locations in the input with the same value. The default definition is fmap . const, but this may be overridden with a more efficient version.

Examples

Perform a computation with Maybe and replace the result with a constant value if it is Just:
>>> 'a' <$ Just 2
Just 'a'

>>> 'a' <$ Nothing
Nothing
An infix synonym for fmap. The name of this operator is an allusion to $. Note the similarities between their types:
($)  ::              (a -> b) ->   a ->   b
(<$>) :: Functor f => (a -> b) -> f a -> f b
Whereas $ is function application, <$> is function application lifted over a Functor.

Examples

Convert from a Maybe Int to a Maybe String using show:
>>> show <$> Nothing
Nothing

>>> show <$> Just 3
Just "3"
Convert from an Either Int Int to an Either Int String using show:
>>> show <$> Left 17
Left 17

>>> show <$> Right 17
Right "17"
Double each element of a list:
>>> (*2) <$> [1,2,3]
[2,4,6]
Apply even to the second element of a pair:
>>> even <$> (2,2)
(2,True)
Strict version of <$>.