# compose

URL: https://caijiao.org/radash/curry/compose
Source: docs/radash/curry/compose.md
Description: 创建函数的组合 在函数组合中，每个函数都将下一个函数作为参数，并必须调用它才能继续执行

创建函数的组合




## 基本用法

在函数组合中，每个函数都将下一个函数作为参数，并必须调用它才能继续执行。

```ts
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
```

如果你以前没有见过这种方式，可能会有点不习惯。下面是一个分解的组合形式，它等同于上面的代码。

```ts
const decomposed = (
  useZero(
    objectize(
      increment(
        increment(
          returnArg('num')))))
)

decomposed() // => 2
```
