カリー化
カリー化とは
「引数を複数受け取る関数」を「引数を段階的に受け取る関数」に分解する
let add = (n, m) => { return n + m } let addCurry = n => { return m => { return n + m } } //呼び出し方 add(3,4) addCurry(3)(4)
これだけだとあんまり利点を感じないがmapとかで大切
// 配列の要素をn倍する関数 let arr = [1, 2, 3, 4] let n = 3 // ダメな例 let sub1 = (n, el) => { return el * n } arr.map(sub1(n)) //これは呼べない arr.map(sub1) // こんなふうにしたら(el,idx)が渡されちゃう // カリー化すると let sub2 = n => { return el => { return el * n } } arr.map(sub2(n)) //これは期待どおり動く
ちなみにReasonMlでは自動でカリー化してくれるからsub1のままでも動くはず