>>> const 3 $ Prelude.undefined 3 >>> const 3 $! Prelude.undefined *** Exception: Prelude.undefined ...
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.