タグ

lazy-evaluationとcontrol-flowに関するnabinnoのブックマーク (2)

  • 【保存版】制御構造別非同期プログラミング完全制覇(サーバサイドJavaScript・CoffeeScript) - Qiita

    補遺書いた ライブラリ化して、フロントエンドにも対応した。GitHubリポジトリ。で、npmに上げた。そして、フロントエンド向けの紹介も書いた。ついでに、「asyncライブラリじゃだめなの?」という問いへの答えは「駄目」だ。asyncはsetImmediateとかnextTickとかで制御を実現しているので、タイミングの問題およびパフォーマンスのロスを引き起こす。 はじめに 対象読者はJavascript中級者を想定していますが、上級者の方もざっと読んでみて下さい。実は中級者であることが判明するかも知れません。 非同期関数を使って順次処理を行う場合、継続で繋いでいきます。しかし、この継続による表現は、同期処理に比べて直感的ではないため、難しい処理はしなくても済むようにプログラミングする羽目になっているケースが少なくないのでは、と私は憂慮しています。わかんなきゃコルーチン使えばいいや、という

    【保存版】制御構造別非同期プログラミング完全制覇(サーバサイドJavaScript・CoffeeScript) - Qiita
  • 遅延評価 - Wikipedia

    評価しなければならない値が存在するとき、実際の計算を値が必要になるまで行わないことをいう。評価法が指示されているが実際の計算が行われていない中間状態の時それをプロミス(英: promise)や、計算の実体をさしてサンク(英: thunk)といい、プロミスを強制(英: force)することで値が計算される。一旦計算された値はキャッシュをすることが可能であり、遅延プロミスは最大で一度しか計算されないようにすることができる。ただし、Haskell の実装によっては、何度でも同じ計算を行う。 遅延評価を行う利点は計算量の最適化である。 ある関数を呼び出すとき、その関数が引数の全てを利用するとは限らない。条件次第で捨ててしまうような値を事前に準備することは非効率的である。このような場合遅延評価を行うと必要なときだけ値が計算されるので計算量を低減できる。 また同じ評価を複数回利用する可能性があるとき、

  • 1