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 Data.List.zipWith ($) fs xs.