OCamlむずかしい

eval = function
	  Funktion f -> fun cont -> cont f
	| Apply (rator, rand) -> fun cont -> eval rator (function D ->
		  cont (D1 rand)
		| erator -> eval rand (fun erand -> apply erator erand cont))

なにが書いてあるのかさっぱり理解できない。。。

第一引数がFunktionの時、\cont -> cont fを返す、と読み取れるのだけど、順番から考えてFunktion f -> fun cont -> f contじゃないと行けないような気がする。
Applyの方も引数の名前がいみふめい。

あー、わかったかも
パーサの結果を見てみると

(Apply (Apply (Apply (Func S) (Apply (Apply (Func S) (Apply (Apply (Func S) (Func I)) (Func I)))

ってかんじにApplyでない関数はFuncが前置きに付いているの。
このFuncを捨てるためにこうなっているのかも。

ちがうかな。。。。

let rec apply = function
	  I -> (fun t -> fun cont -> cont t)

ちがう。。。(Apply (Func K) (Func S))にあわない。。。

あ、わかった。continueのcontだ!
parse "`i`sk`ii"をパースすると(Apply (Func I) (Apply (Func S) (Func K)),"`ii")になるんだ!evalが終わった後で、contが空じゃなかったらもう一度parseする必要があるんだ!