20160428 html5jwebplat

82 views
0 views

Published on

JavaScript の関数プログラミング要素について解説してます。あとはパフォーマンスツールの例などもあります。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
82
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

20160428 html5jwebplat

  1. 1. Y=f=>(x=>f(x(x)))(x=>f(x(x))) MozillaJapanテクニカルマーケティング 清水智公(nshimizu@mozilla-japan.org/@chikoski) html5jWebプラットフォーム部第12回勉強会Satisfunction(){...};
  2. 2. Firefox for iOS FirefoxをiPhone、iPad、 そしてiPod touchでも
  3. 3. N.Shimizu • Mozilla Japan: L10N / dev-rel in devtools and games • html5j Web プラットフォーム部、
 Firefox OS、Firefox OS コードリーディング、
 html5j ゲーム部 • @chikoski • プログラミング言語、圏論、分類、ベイジアン、サッカー
  4. 4. データと操作
  5. 5. 数学的な関数:変数に依存して決まる値、もしくはその対応関係のこと
  6. 6. 得点 得点率 100点 満点 合格点 以上? 採点
  7. 7. 関数型言語の代表的特徴 JavaScript 第一級関数 ◯ 参照透過性 ×(破壊的な操作が可能) 単一代入 △(constを利用すれば実現可能) 型による制約 ×(duck typing) 遅延評価 ×(常に正格な評価を行う) 直和型 ×
  8. 8. 関数定義
  9. 9. function 文:名前付きの関数を定義する文
  10. 10. function 式:無名関数を定義する式
  11. 11. よく見る無名関数の利用例
  12. 12. よく見る無名関数の利用例
  13. 13. 式: 評価すると値になるもの
  14. 14. 式の例
  15. 15. 代入をすることによって値に名前をつける
  16. 16. 無名関数の定義も式
  17. 17. 関数を変数に代入できる
  18. 18. 関数の変数への代入、代入された関数の参照
  19. 19. 関数の呼び出し
  20. 20. 関数の呼び出し
  21. 21. 関数を引数にとる関数
  22. 22. 配列の値の合計を求める関数
  23. 23. 配列の値の2乗和を求める関数
  24. 24. 配列の値の3乗和を求める関数
  25. 25. 
 配列の各要素に関数 f を適用した結果の総和を求める関数
  26. 26. 関数を切り替えることで振る舞いを変更する
  27. 27. よく見る関数を引数とする関数の呼び出し
  28. 28. リスト処理
  29. 29. filter:フィルタする判断をパラメータ化
  30. 30. 
 sort:順序の判定方法をパラメータ化
  31. 31. 
 map / reduce:写像方法と左畳み込みの方法をパラメータ化
  32. 32. every / some:条件の判定をパラメータ化
  33. 33. forEach:繰り返す手続きをパラメータ化
  34. 34. 関数を返す関数
  35. 35. 関数を返り値とする関数を定義できる
  36. 36. 引数の片方を固定することで、特殊な関数を定義できる
  37. 37. 関数を返す関数の利用例: 関数の一部分を固定し、特殊な関数を作成する
  38. 38. 関数を返す関数を利用して、「同じようなことをする」関数を生成できる
  39. 39. 関数を引数とし、関数を返す関数
  40. 40. 関数を切り替えることで振る舞いを変更する
  41. 41. リストの総和を求める関数を返す関数 sigma
  42. 42. 合計、二乗和、三乗和を求める関数の定義と利用
  43. 43. 参照透過性
  44. 44. 純粋な関数:同じ入力であれば、常に同じ値が出力される
  45. 45. 参照透過性のある関数
  46. 46. 参照透過性のない関数:呼び出すたびに返り値の値が異なる
  47. 47. 破壊的な操作 / 副作用:状態を変更する操作
  48. 48. 
 
 クロージャを利用して、状態のスナップショットを取る
  49. 49. 参照透過なカウンターの利用例
  50. 50. オブジェクト指向で実装したカウンタの利用例
  51. 51. カリー化
  52. 52. 足し算を行う関数
  53. 53. 関数を返すように書き換える
  54. 54. 関数を返す関数
  55. 55. 書き換えた add の使用例
  56. 56. カリー化:複数の引数をとる関数を1つの引数をとる関数にかえること
  57. 57. カリー化を利用した条件分岐の実現
  58. 58. 自然数の関数表現
  59. 59. Yコンビネータ
  60. 60. 再代入:同じ変数に対する代入
  61. 61. x に基づく仕事をしていいのか?
  62. 62. const:ローカルな定数の作成
  63. 63. const:ローカルな定数の作成
  64. 64. コールスタック Call stack consumption in recursive calls
  65. 65. n * factorial(n - 1); のバイトコード
  66. 66. コールスタックサイズの調査
  67. 67. Runtime Call stack size Firefox 50994 Google Chrome 10402 node.js 11034
  68. 68. 
 コンソールで実行すると call stack があふれる
  69. 69. コンソールで実行すると call stack があふれる
  70. 70. strict モードの末尾再帰はインライン展開される(ES2015)
  71. 71. インライン展開のイメージ
  72. 72. パフォーマンス
  73. 73. 普通のエラーハンドリング
  74. 74. Promiseによるエラーハンドリング
  75. 75. イベント:時系列データ
  76. 76. イベント A B C D

×