Minilisp.pm/t/do.t

36 lines
885 B
Raku

(plan 4)
(defun nop () nil)
(expect "do - simple example"
(equal (do ((n 1)) (t n)) 1))
(defun range (start end)
(do ((i (- end 1) (- i 1))
(lst (list) (cons i lst)))
((< i start) lst)))
(expect "do - range function"
(equal (let ((lst (range 1 4)))
(comment lst)
lst)
(list 1 2 3)))
(expect "do - has implicit block nil"
(equal 'ok
(block nil
(do () (t)
(return 'fail))
'ok)))
(expect "do - implicit tagbody"
(equal 'ok
(catch 'test
(do ((n 0 (+ 1 n))) ((> n 0))
(nop)
(nop)
(go end)
middle
(throw 'test 'fail)
end)
'ok)))