撰寫

讓你組成幾個函式 f₀ f₁ … fₙ。它返回一個函式,它將 fₙ連續應用於其引數,然後將 fₙ₋₁應用於 fₙ的結果,依此類推。函式從右到左應用,如數學函式組成:(f ∘ g ∘ h)(x) = f(g(h(x)))

> ((compose sqrt +) 16 9)
5
> ((compose - sqrt) 16)
-4

每個函式的 arity 應該包括函式的右側返回值的數量。最右邊的功能決定了整個構圖的靈活性。compose1 函式強制函式返回 1 值並期望 1 引數。但是,compose1 不限制最後一個函式的輸入 arity,也不限制第一個函式的輸出 arity。

[n input]--> first-function -->[1 output]--> ... last function -->[m output].

((compose + values) 1 2 3 4)
10
> ((compose1 + values) 1 2 3 4)
XX result arity mismatch;
 expected number of values not received
  expected: 1
  received: 4
  values...: