hcl/t/var-01.hcl

98 lines
1.4 KiB
HCL
Raw Normal View History

2022-05-05 04:03:56 +00:00
(defun x (a b ::: r)
| x y |
(set x a)
(set y b)
(if (> a b)
(do
| a b |
(set a (mod x y))
(set b (+ x y))
(set r (* a b))
)
else
(do
| 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"))
)
(set 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))
(defun x ()
(do
| x y |
(set x 99)
(try
(do
| 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)
2022-05-05 13:04:04 +00:00
(defclass T
| j |
(defun ::* new()
(set j 99)
(return self)
)
(defun x()
2022-05-06 00:17:26 +00:00
(set R
(do
| x |
(set x 1)
(while (< x j)
(defun Q() x)
(set x (+ x 1))
)
2022-05-05 13:04:04 +00:00
)
2022-05-06 00:17:26 +00:00
)
2022-05-05 13:04:04 +00:00
)
)
(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))
2022-05-06 00:17:26 +00:00
(if (nqv? R false) (print "ERROR: R is not false\n")
else (printf "OK: %O\n" R))