src/call.js
import pipe from './pipe';
/**
* 指定された引数を使用して最初の関数を呼び出し、その結果を引数に次の関数を呼び出します。引数にコードの一部を使用したい場合は、tCallマクロを使用してください。
*
* @param {*} x - 最初の関数の引数
* @param {function[] | iterator} fs - 順番に呼び出す関数の集合
*
* @return {*} 最後の関数の戻り値
*
* @example
* call(x, foo, bar);
* // = bar(foo(x));
*
* @example
* tCall(iterate(inc, 1),
* takeWhile(x => x < 10),
* filter(x => x % 2));
*
* // = call(iterate(inc, 1), xs => takeWhile(x => x < 10, xs), xs => filter(x => x % 2, xs))
* // = filter(x => x % 2, takeWhile(x => x < 10, iterate(inc, 1)))
*/
export default function call(x, ...fs) {
return pipe(...fs)(x);
}