36 lines
885 B
Raku
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)))
|