diff options
Diffstat (limited to 'racket.html.markdown')
| -rw-r--r-- | racket.html.markdown | 14 | 
1 files 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) | 
