関数型もどきプログラミング
関数型ではないけど関数型に見えるプログラミング
関数型ではないけれど、関数型っぽく書けるJavaScriptのコードを、備忘録としてここに書きます。
注意点
- 関数型ではありません
- 参照透過性も考慮されていません
- オブジェクト指向かどうかの保証はしません
サンプル
配列にそれぞれ1を足すコードです。
function map(list) { return f; function f (func) { if (!func) { return list; } for (var i=0;i
list = list.concat([])を追加すると、副作用が少なくなり、多少はまともになるかもしれません。
また、上のコードが何をやっているのか分りやすくするため、数字を足していくだけのコードも書いておきました。
function add(num) { return f; function f (n) { if (!n && (n !== 0)) { return num; } num += n; return f; }; }; add( 2 )( 3 )(); // 5 add( 2 )( 3 )( 12 )( 101 )(); // 118