Implement loop/return forms
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
;; vi:ft=lisp:sw=2:ts=2
|
||||
|
||||
;; loop, broken by (return)
|
||||
(setq looped-loop (let (i 0)
|
||||
(loop
|
||||
(if (< i 10)
|
||||
(setq i (+ i 1))
|
||||
(return)
|
||||
)
|
||||
)
|
||||
i
|
||||
))
|
||||
|
||||
;; while, broken prematurely
|
||||
(setq looped-while (let (i 0)
|
||||
(while (< i 20)
|
||||
(setq i (+ i 1))
|
||||
(if (= i 10) (return))
|
||||
)
|
||||
i
|
||||
))
|
||||
|
||||
;; while, broken by condition
|
||||
(setq looped-while-full (let (i 0)
|
||||
(while (< i 10)
|
||||
(setq i (+ i 1))
|
||||
)
|
||||
i
|
||||
))
|
||||
|
||||
;; All loops execute the same count of times
|
||||
(assert (= looped-loop looped-while looped-while-full))
|
||||
Reference in New Issue
Block a user