CPS 変換

Util のソースプログラムを入力して下さい。


入力の文法カテゴリ:
Expr(式) Decls (宣言 つまり、 変数 = 式; 変数 = 式; … ; 変数 = 式

入力例(コピペして使って下さい):
prodPrimes = \ n -> if n==1 then 1
                    else if isPrime n then n * prodPrimes (n-1)
		                      else prodPromes (n-1)
;
fact = \ n -> if n==0 then 1 else n*fact(n-1)
;
move = \ n ->
       write ("move " ++ n)
;
hanoi = \ n ->
        if n>0 then begin
                      hanoi (n-1);
                      move n;
                      hanoi (n-1)
                    end
               else ()
;
fibM = \ m -> begin
  write ("argument = " ++ m);
  if (m<2) then set xP 1
           else set xP (fibM (m-1) + fibM (m-2));
  write ("result for the argument " ++ m ++ " = " ++ get xP);
  get xP
end

Koji Kagawa