($) :: (a -> b) -> a -> b (<$>) :: Functor f => (a -> b) -> f a -> f bWhereas $ is function application, <$> is function application lifted over a Functor.
>>> 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)
($) :: (a -> b) -> a -> b (<$>) :: Functor f => (a -> b) -> f a -> f bWhereas $ is function application, <$> is function application lifted over a Functor.
>>> 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)
($) :: (a -> b) -> a -> b (<$>) :: Functor f => (a -> b) -> f a -> f bWhereas $ is function application, <$> is function application lifted over a Functor.
>>> 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)