blob: 12f957df5b3497eab6e0cceb6a57b42160901120 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
@(do
(defmacro while ((condition : result) . body)
(let ((cblk (gensym "cnt-blk-"))
(bblk (gensym "brk-blk-")))
^(macrolet ((break (value) ^(return-from ,',bblk ,value)))
(symacrolet ((break (return-from ,bblk))
(continue (return-from ,cblk)))
(block ,bblk
(for () (,condition ,result) ()
(block ,cblk ,*body)))))))
(let ((i 0))
(while ((< i 100))
(if (< (inc i) 20)
continue)
(if (> i 30)
break)
(prinl i)))
(prinl
(sys:expand
'(while ((< i 100))
(if (< (inc i) 20)
continue)
(if (> i 30)
break)
(prinl i))))
(let ((i 0))
(while ((< i 5))
(inc i)
(labels ((while () 'while))
(let ((break 'break))
(prinl (list (while) break)))))))
|