2007-12-17から1日間の記事一覧

SKIコンビネータでSKK = I(Ruby版)そのさん

関数適用の演算子をProcクラスに追加してみました。とりあえずこんなところにしておこうと思います。 def nlambda(n, xs = [], &f) if n <= 0 f[*xs] else lambda {|x| nlambda(n - 1, xs + [x], &f) } end end class Proc def *(x) self[x] end end I = nla…

SKIコンビネータでSKK = I(Ruby版)そのに

lambdaが入れ子になっているところをまとめてみました。だいぶ読み易くなりました。 def nlambda(n, xs = [], &f) if n <= 0 f[*xs] else lambda {|x| nlambda(n - 1, xs + [x], &f) } end end I = nlambda(1) {|x | x } K = nlambda(2) {|x, y | x } S = nl…

SKIコンビネータでSKK = I(Ruby版)そのいち

Rubyで書くとこんな感じかな。カリー!! カリー!! I = lambda {|x| x } K = lambda {|x| lambda {|y| x }} S = lambda {|x| lambda {|y| lambda {|z| x[z][y[z]] }}} p S[K][K][100] == I[100] # => true

19:45ごろ帰りました。

SKIコンビネータでSKK = I

をやってみました。んー、あまりに素直に書け過ぎてつまんないなぁ。 module Main (main) where i x = x k x y = x s x y z = x z $ y z main = print $ s k k 100 == i 100 -- => True

神戸ルミナリエに行きました

そういえばルミナリエが最終日だなぁと思って、急きょ駆け込みで行ってきました。 平日だったせいでしょうか、無茶苦茶混んでいるわけではなくスムーズにまわることができました。んー、苦労がないと感動もいまひとつかも。昔揉みくちゃにされて大変な状態で…