úÎd Haskell98 provisionalwren@community.haskell.org7Lift a function for multicomposition. This is like the ::  of a type signature. =Multicompose a function on the appropriate argument. This is  like the -> arrows in a type signature. =Multicompose a function on the appropriate argument, calling A the left function eagerly. That is, the resulting function will  be strict in a# if the left argument is strict in a (assuming @ the final function of the multicomposition, the one applied to $ the return value, is also strict). ?Binary composition: pass two args to the right argument before  composing.   (f .: g) x y = f (g x y) or,   f .: g = curry (f . uncurry g) %This is the same as the common idiom  (f .) . g but more easily ; extended to multiple uses, due to the fixity declaration. @Secondary composition: compose the right argument on the second  arg of the left argument.  (f .^ g) x y = f x (g y) 9Function composition which calls the right-hand function B eagerly; i.e., making the left-hand function strict in its first  argument.   (f .! g) x = f $! g x <This defines the composition for the sub-category of strict  Haskell functions. If the  class were parameterized by 5 the domain and codomain categories (e.g., a regular  Functor f  would be CFunctor (->) (->) f instead) then this would allow  us to define functors CFunctor (->) (!->) f where  fmap f . fmap g = fmap (f .! g).   pointless-fun-1.1.0Data.Function.Pointless$::~>!~>.:.^.!baseGHC.BaseFunctor