fun x (a b :: r) { | x y | set x a set y b if (> a b) { | a b | set a (mod x y) set b (+ x y) set r (* a b) } else { | a b | set a (* x y) set b (- x y) set r (* a b) } if (~= x a) (printf "ERROR: x is not equal to a\n") if (~= y b) (printf "ERROR: y is not equal to b\n") } t := (x 10 20) if (~= t -2000) (printf "ERROR: t is not equal to -2000\n") \ else (printf "OK: %d\n" t) set t (x 30 20) if (~= t 500) (printf "ERROR: t is not equal to 500\n") \ else (printf "OK: %d\n" t) fun x () { | x y | set x 99 try { | x | set x 88 if (~= x 88) (printf "ERROR: x is not 88\n") \ else (printf "OK: %d\n" x) throw 1000 } catch (x) { if (~= x 1000) (printf "ERROR: x is not 1000\n") \ else (printf "OK: %d\n" x) set y x } if (~= x 99) (printf "ERROR: x is not 99\n") \ else (printf "OK: %d\n" x) if (~= y 1000) (print "ERROR: y is not 1000\n") \ else (printf "OK: %d\n" y) } x class T { var j fun(#classinst) new() { set j 99 return self } fun x() { set R { | x | set x 1 while (< x j) { fun Q() x set x (+ x 1) } } } } set t (T:new) t:x set t (Q) if (~= t 99) (print "ERROR: t is not 99\n") \ else (printf "OK: %d\n" t) if (nqv? R false) (print "ERROR: R is not false\n") \ else (printf "OK: %O\n" R) set v #( { |a b| set a 10; set b 20; + a b } { |a b| set a 11; set b 21; + a b } 999 ) set v2 #(30 32 999) if (nql? v v2) (print "ERROR: v1 and v2 are not equal\n")\ else (printf "OK: v and v2 equal\n")