とりあえず写経
継続渡し形式の階乗の定義をRubyで写経してみた。
#! /usr/bin/ruby def fact_cps(n,cont) return cont.call(1) if n == 0 fact_cps((n-1), lambda{|a| cont.call((n*a))}) end def fact(n) fact_cps(n,lambda{|a| 1 * a }) end
うーん。関数をまわしているだけにしかみえない。。。
もうちょっと、考える。
継続渡し形式の階乗の定義をRubyで写経してみた。
#! /usr/bin/ruby def fact_cps(n,cont) return cont.call(1) if n == 0 fact_cps((n-1), lambda{|a| cont.call((n*a))}) end def fact(n) fact_cps(n,lambda{|a| 1 * a }) end
うーん。関数をまわしているだけにしかみえない。。。
もうちょっと、考える。