カリー化
nタプルを取る関数をm回関数適用する関数に変換する手法。部分適用と相性が良い。 code:javascript
const map = f => l => Array.prototype.map(l, f)
const double_map = map(e => e * e)
カリー化と部分適用の混同
たまに見られるので気をつけよう。OCamlやHaskellなどの関数型言語では基本的に関数は何も考えずに書くとcurried functionとして定義される。一方JavaScriptなどの場合は、OCamlやHaskell的に考えると1つのタプルを受け取ってなにか値を返すuncurried functionとみなすことができる。この場合カリー化を手動でおこなう必要がある。
// なんでカリー化と部分適用を混同するんだ🤔