08/04/10 23:24:33
相互再帰たらいまわし
(= Y* ([_ _]
[fn fs (fn (f) (fn xs (apply (apply f (map (apply (_ _) fs) fs)) xs)))]))
(= tarai
((fn (f g) ((Y* f g) f))
(fn (f g)
(fn (x y z)
(if (<= x y) y
(g (f (- x 1) y z)
(f (- y 1) z x)
(- z 1) x y))))
(fn (f g)
(fn (x y zx zy zz)
(if (<= x y) y
(let z (f zx zy zz)
(f x y z)))))))