
You mean "apply the function on the right to the result of the left"? Yes. (.) :: a -> (a -> b) -> b x.f == f x
How about making . reverse composition, and...symbol for flip ($) [1,2,3]#null.not
left-to-right order lets you think of the starting value and make a sequence of transformations does syntax affect this? if someone views a solution with an imperative
Prefix usage: given: (f :: Integer -> Char) and (g :: Double -> Double -> Integer) (foo = .f) == \x -> f x (bar = .g) == \x y = g x y foo :: Double -> Double -> Char foo = .g.f that works too, and is clearly easier to implement, but there's an opportunity to shorten the gap between Haskell and the mainstream languages, and without losing functional composition. Also, if you flip the meaning of dot, some existing code will still compile, but produce different values (map ((+1) . (*2))). By changing the type signature of the infix operator, it would break all existing code at *compile-time*. With the prefix dot operator, I like how small the transition from pointwise to point-free code is: f x = x.null.not f = .null.not Same is true of the hash-dot style too, of course: f x = x#null.not f = null.not Both are quite a better than Haskell today: f x = not (null x) f x = not $ null x f x = (not . null) x f = not . null point-of-view, won't they just use $ or parenthesis everywhere anyway? Thanks, Greg