UtilCont コンパイラ

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


入力の文法カテゴリ:
Expr(式) Decls (宣言 つまり、 変数 = 式; 変数 = 式; … ; 変数 = 式
出力に do 式を使いますか:
はい do式 を使います いいえ >>= を使います

入力例(コピペして使って下さい):
foo = \ n ->
  begin
    set xP 1;
    set yP n;
    while get yP > 0 do
      begin
        val r = get xP in
        val n = get yP in
        begin
          if n == 10 then break
          else if n == 3 then
            begin
              set xP r;
              set yP (n - 1);
              continue
            end
          else ();
          set xP (r * n);
          set yP (n - 1)
        end
      end;
    get xP
  end
;
bar = \ x -> begin
	       set xP 1;
	     label1:
	       if get xP > 100 then
	         goto label2
	       else ();
	       set xP (get xP * 2);
	       goto label1;
	     label2:
	       get xP
	     end
;
fact = \ n -> if n == 0 then 1 else n * fact (n - 1)
;
increase n k =
     if n > 10 then ()
     else begin writeStr " i:"; write n;
     increase (n + 1) (callcc (\ c -> unTrick k (Trick c))) end
;
decrease n k =
     if n < 0 then ()
     else begin writeStr " d:"; write n;
     decrease (n - 1) (callcc (\ c -> unTrick k (Trick c))) end
;
coroutine x = increase 0 (Trick (decrease x))

Koji Kagawa