タグ

cpsに関するnsyeeのブックマーク (3)

  • MaybeCPSモナド - かしをろぐ

    2014-02-13 MaybeCPSモナド Haskell これね、新型のオスプレイ。 モナドはとても実用的な構造だ。モナドは単なる第一級手続きとは一線を画すものだ[要出典]。 Haskellという言語の上に新たな構文、制御構造、副作用を表現できる。自在手続きとでも言ってみようか。 そんなモナドだが、書き方によってはそのパフォーマンスが著しく低下してしまうことがある。 hoge :: Int -> Maybe Int hoge 0 = Nothing hoge i = hoge (i-1) >>= return このMaybeを返す単純な再帰関数は基底部に辿り着くまでに以下のような式を生成する。 (...(((Nothing >>= return) >>= return) >>= return) ... >>= return) 左結合で(>>=)がネストされていく様が見えるだろう。これを

  • GitHub - Sage/streamlinejs: Asynchronous JavaScript for dummies

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - Sage/streamlinejs: Asynchronous JavaScript for dummies
  • CPSチェイン - keigoiの日記

    追記:「東京Node学園#1「非同期プログラミングの改善」のエッセンス」というスライドで、似たようなテクニックが使われているのを見た(p.32-)。 そんなにスジは悪くないのかもしれない。 JavaScriptでは非同期的に関数を呼ぶことが多い。例えばimgタグのロードが終わったら次にAを処理して、それが終わったらBをして…など。 こういうときCPS形式でプログラムを書くはめになる。 func1(arg1, function(res1){ func2(arg2, function(arg3, res2){..})}) かようにJavaScriptでは関数リテラルがすこぶる扱いづらい -- 'function' とか 'return' とか {} のネストとか…あとカリー化するにも一苦労 -- JavaScriptプログラマはどう書くんだろう? こういう非同期呼び出しをうまく同期的に記述する

    CPSチェイン - keigoiの日記
  • 1