Radash
  1. Curry
  2. compose

Basic usage

In a composition of functions, each function is given the next function as an argument and must call it to continue executing.

import { compose } from 'radash'

const useZero = (fn: any) => () => fn(0)
const objectize = (fn: any) => (num: any) => fn({ num })
const increment = (fn: any) => ({ num }: any) => fn({ num: num + 1 })
const returnArg = (arg: any) => (args: any) => args[arg]

const composed = compose(
  useZero,
  objectize,
  increment,
  increment,
  returnArg('num')
)

composed() // => 2

This can be a little jarring if you haven’t seen it before. Here’s a broken down composition. It’s equivelent to the code above.

const decomposed = (
  useZero(
    objectize(
      increment(
        increment(
          returnArg('num')))))
)

decomposed() // => 2