From 6ff708a040868e99936e73edd18575181bd2e367 Mon Sep 17 00:00:00 2001 From: Manu Date: Tue, 16 Jul 2013 10:51:38 +1200 Subject: replace unless macro by a while macro --- racket.html.markdown | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/racket.html.markdown b/racket.html.markdown index 707919dd..84dc2ada 100644 --- a/racket.html.markdown +++ b/racket.html.markdown @@ -404,10 +404,18 @@ vec ; => #(1 2 3 4) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Macros let you extend the syntax of the language -(define-syntax-rule (unless test then else) - (if test else then)) -(unless (even? 10) "odd" "even") ; => "even" +; Let's add a while loop +(define-syntax-rule (while condition body ...) + (let loop () + (when condition + body ... + (loop)))) + +(let ([i 0]) + (while (< i 10) + (displayln i) + (set! i (add1 i)))) ; Macros are hygienic, you cannot clobber existing variables! (define-syntax-rule (swap x y) -- cgit v1.2.3