タグ

2014年10月5日のブックマーク (1件)

  • Ruby1.9のfiberのかっこいい使い方

    15. 関数とクロージャ関数の独立変数と係数 f(x) = a*x aは係数でxは独立変数?係数のa をω+ωの視点から見下ろして定義fa= ->a {->x {a*x}}で、aに何かの値を束縛したωな関数をつくる fa= ->a {->x {a*x}}> f=fa[2]> f[3]=> 6> eval('a',f.binding)=> 2 16. 関数のメモ化関数には時間の概念がないでも、もう一つ上のωの視点から見おろせば状態が作れる組み合わせ関数のメモ化combi_memo= ->m { ->n {m[n]||={}; ->r {m[n][r]||=combi[n][r]}}}> cm=combi_memo[{}]> cm[3][2]=> 3> cm[30][7]=> 2035800> eval('m',cm.binding)=> {3=>{2=>3}, 30=>{7=>2035800

    Ruby1.9のfiberのかっこいい使い方
    ihag
    ihag 2014/10/05
    そして油断していると、Fiberで束縛した資源のファイナライザやensure節が呼ばれずにグヘッとなるのであった。