
Dan Doel wrote:
3) Left associative ($) is consistent with left associative ($!).
(f $! x) y z ((f $! x) $! y) $! z
Left associative, these are:
f $! x $ y $ z f $! x $! y $! z
Nice! Subconsciously, the fact that ($!) is currently not left associative has always bitten me. In the light of Cale's plan to make (.) equivalent to fmap , there is also the option to redefine ($) to mean fmap . This would eliminate the need for a special <$> for applicative functors. Note that setting (.) or ($) = fmap subsumes function application, because we have fmap :: (a -> b) -> a -> b for the /identity functor/. In other words, the current ($) and (.) are just special cases of the general fmap . Unfortunately, the identity functor currently can't be overloaded, although I think it would be unambiguous. Regards, apfelmus