$

From HaskellWiki
Revision as of 02:36, 16 April 2012 by HowardBGolden (talk | contribs) (A new page for the $ operator explaining its usefulness)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

$ is an infix operator often seen in Haskell code. It applies the function on its left to the value on its right. At first glance this operator appears redundant, since ordinary application (f x) means the same as (f $ x). However, $ has the lowest, right-associative binding precedence (infixr 0), so it sometimes allows parentheses to be omitted; for example:

    f $ g $ h x  =  f (g (h x))

If $ were omitted, the parse would be different:

    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.

Definition

$ comes from the Prelude, where it is defined as:

    infixr 0  $
    ($) :: (a -> b) -> a -> b
    f $ x = f x

See also