Page 1
Y= f => (x => f(x(x)))(x => f(x(x)))
Mozilla Japan テクニカルマーケティング 清水智公 ([email protected] / @chikoski)
html5j Webプラットフォーム部 第12回勉強会 Satis function( ){ ... };
Page 2
Firefox for iOSFirefoxをiPhone、iPad、 そしてiPod touchでも
Page 3
N. Shimizu
• Mozilla Japan: L10N / dev-rel in devtools and games
• html5j Web プラットフォーム部、Firefox OS、Firefox OS コードリーディング、 html5j ゲーム部
• @chikoski
• プログラミング言語、圏論、分類、ベイジアン、サッカー
Page 5
数学的な関数:変数に依存して決まる値、もしくはその対応関係のこと
Page 29
配列の各要素に関数 f を適用した結果の総和を求める関数
Page 35
map / reduce:写像方法と左畳み込みの方法をパラメータ化
Page 36
every / some:条件の判定をパラメータ化
Page 40
引数の片方を固定することで、特殊な関数を定義できる
Page 41
関数を返す関数の利用例: 関数の一部分を固定し、特殊な関数を作成する
Page 42
関数を返す関数を利用して、「同じようなことをする」関数を生成できる
Page 48
純粋な関数:同じ入力であれば、常に同じ値が出力される
Page 51
参照透過性のない関数:呼び出すたびに返り値の値が異なる
Page 53
クロージャを利用して、状態のスナップショットを取る
Page 61
カリー化:複数の引数をとる関数を1つの引数をとる関数にかえること
Page 69
コールスタック Call stack consumption in recursive calls
Page 71
n * factorial(n - 1); のバイトコード
Page 84
コンソールで実行すると call stack があふれる
Page 85
コンソールで実行すると call stack があふれる
Page 86
strict モードの末尾再帰はインライン展開される(ES2015)