撰寫
讓你組成幾個函式 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...: