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

Yコンビネータ

いろいろ弄っているうちに,それらしいものは出来たのだが,まだまったく理解できていない. fact = lambda {|f| lambda {|n| (n==0)? 1: n * f[n-1] }} y_combinator = lambda {|g| lambda {|f| g[ lambda {|x| f[f][x]} ]}[ lambda {|f| g[ lambda {|x| f[…

Listモナド(2)

2つの関数を繋げるだけなら,concatMapを作れば済むよな.もしかしたら同等のメソッドが標準であったりして…. class Array def concat_map( &block ); map(&block).inject([]){|c,a| c+a }; end end def expandPattern( str) expandCharClass(str).concat_m…