Composition operation
The composition operation, g.f or g after f, applies function f to x (which takes us from A to B) and passes the result of that to g (which takes us from B to C), and that nested set of operations is equivalent to the composition operation of g.f.
In Haskell, we define our composition operation on the first line and request to see the type definition of our composition operation on the second line. The third line is what the composition means:
> (.) g f = \x -> g (f x) > :t (.) (.) :: (b -> c) -> (a -> b) -> a -> c
The a
, b
, and c
above correspond to the A, B, and C in the following diagram.
It says, when we pass the A to B function (f) to the B to C function (g), we get the A to C function (g.f).
This is basic composition. Assuming we start at A, this diagram says we can get to C either by way of B (A to B to C) or by going directly from A to C. When we choose the short route (A to C), or g.f, we compose g and f in a nested manner, like g(f(x))...