vim script でカリー化
ふと、思いついたので書いてみた。
[ソース]
function! s:plus1(b) return 1 + a:b endfunction function! s:plus2(b) return 2 + a:b endfunction function! s:plus3(b) return 3 + a:b endfunction function! s:plus(a, b) return a:a + a:b endfunction function! s:curry(func, a) return function(a:func.a:a) endfunction function! s:main() echo s:curry("s:plus", 1)(2) echo s:curry("s:plus", 3)(6) endfunction call s:main()
[出力]
3 9
関数名に直接値を記述して適用しています。
ここまで来ると Boost.PP の黒魔術を使っているような感じですね。
数値以外には使えそうにないですが、さて。