Compose
Pipe, but in the other direction. (2 min. read)
If pipe
made sense, you already know compose
. Instead of going left-to-right, we go right-to-left.
This returns 49 since we’re using pipe
.
import { pipe } from 'ramda';const doMath = pipe(// start heredouble, // 2 * 2 = 4square, // 16triple, // 48increment // 49);const result = doMath(2);console.log({ result });
But the same sequence with compose
returns 162, since the order of operations have reversed.
import { compose } from 'ramda';const doMath = compose(double, // 162square, // 81triple, // 9increment // 2 + 1 = 3// start here);const result = doMath(2);console.log({ result });
To get 49, like pipe
, flip the sequence.
import { compose } from 'ramda';const doMath = compose(increment, // 49triple, // 48square, // 16double // 2 * 2 = 4// start here);const result = doMath(2);console.log({ result });
compose
mirrors the mathematical form of composition–the innermost function goes first.
increment(triple(square(double(x))));