Here is another family of composition operators: > (f $. g) x = (f) (g x) -- a.k.a. (.) > (f .$ g) x = (f x) (g) -- a.k.a. flip > (f $.. g) x y = (f) (g x y) > (f .$. g) x y = (f x) (g y) > (f ..$ g) x y = (f x y) (g) > (f $... g) x y z = (f) (g x y z) > (f .$.. g) x y z = (f x) (g y z) > (f ..$. g) x y z = (f x y) (g z) > (f ...$ g) x y z = (f x y z) (g) > -- etc. > infixl 8 $., .$, $..,.$.,..$, $...,.$..,..$.,...$ Think of the @.@ as the placeholder for an argument. It would be better if I could use @_@, but Haskell doesn't allow that. You can also think of the dots as the points from point-free style, so these operators allow for the preservation of the number of points :). With these operators the previous example becomes: ]> concatMap = concat $.. map ]> sum23 = (+) $. (2*) .$. (3*) -- \x y -> 2*x + 3*y I like the second family better, because they do not use @(.)@, which makes the first family more confusing. What do you think? Would these operators be useful in practice?