Life Goes On

まあまあだけど楽しんでる方です

再帰の続き

相変わらずハマってます。もともとやりたかったことはコレ。(何をしたいのかバレバレですが)

\ f x -> if succ x == 'w' then x else f (succ x)

ただこれだと f (succ x) を評価しようとして無限ループに陥ってしまうので、書き換える。
でもやっぱり無限ループ‥。

\ f x -> (if succ x == 'w' then const x else f) (succ x)

理屈は合ってると思うんだけどなぁ。サンプルコードを読んで勉強しよう。

wv	: id
wwWWWwwv	: const
wwWWWWWWwWWWWWWWWwWWWWWwwwWWwWwwwwwwWwwwwwv
	: g f x = (du (succ x) (const x) f) (succ x)
wwWWwwWwwvwwWWWwWWWwvwWWwWwv	: Y
Wwwww	: Y g
Wwwwwwwwwww	: (Y g) du
WWWWWWWWWw	: out ((Y g) du)

追記:上述のコードはインタプリタによっては正常に動作するようです。(Java は NG、Ruby は OK)