何かの答
問題を知らない人は問題を見たほうがよいよ: http://d.hatena.ne.jp/sumii/20090716/p1
let rec d () = d () let f5 : ((unit -> unit) -> unit) -> unit = fun g -> g d let f6 : ((unit -> unit) -> unit) -> unit = fun g -> let y = ref 0 in let h () = y := 1 in g h; if !y = 1 then d ()
ところで、なんでこの頃、「答え」って書くんだろう。「え」がダサい。
C とか Javascript っぽく書かれると、なんか異様に難しく思えたけど、ML にしたらそうでもなかったのはやっぱり私が変な人だから?
いや、そうじゃなくて、使用する言語仕様の性質が思考に影響を与えているんだな。難読化ついでにGolfしてみた。
そろそろ答を書くよ。Golfで難読化してあります。
let c x f=f(fun f->x:=f);!x()in c(ref(fun _->()))