タグ

lazyに関するkabisukeのブックマーク (2)

  • Haskell のリストと遅延評価が少し分かった - IT戦記

    いろいろ試行錯誤をしていて JavaScript の関数を作って呼び出すのと Haskell のそれとの決定的な違いを見つけた。 それは、たぶんものすっごい単純で当たり前なことだけど、これが分かったとたんに僕の周りのピースが一気に繋がったので、恥をしのんで書く。 僕は以下のように脳内変換していて Haskell a = 1 iszero i = if (i == 0) then True else False Javascript a = function() { return 1 } iszero = function(i) { return i()/*評価は関数呼出し*/ == 0 ? True : False } // True False はこう True = function() { return true } False = function() { return false

    Haskell のリストと遅延評価が少し分かった - IT戦記
  • JavaScript で遅延評価 - IT戦記

    ぶっちゃけ 僕は遅延評価のことたぶんあんまり理解してないと思います。 でも、とりあえずこんなの作ってみた function l(a) { return typeof a == 'function' ? a() : a } // lazy の l こうやって使う function add(i, j) { return l(i) + l(j) } var count = 0; alert(add(1, 1)); // 2 alert(add(1, function(){ return 1 })); // 2 alert(add(1, function(){ return count++ })); // 1 alert(add(1, function(){ return count++ })); // 2 alert(add(1, function(){ return count++ }));

    JavaScript で遅延評価 - IT戦記
  • 1