From f7b1f98ac06380f891ec62bfff56eaaff4dfc5fc Mon Sep 17 00:00:00 2001 From: sloum Date: Tue, 21 Jun 2022 23:01:16 -0700 Subject: [PATCH] Adds more macro examples --- examples/macros.slo | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/examples/macros.slo b/examples/macros.slo index 5bb9c71..edc466b 100644 --- a/examples/macros.slo +++ b/examples/macros.slo @@ -11,12 +11,24 @@ (eval ['lambda [] ['if test (list-join ['begin] ... [['el]])]])) (el))) +(define when + (macro (test ...) + (eval ['if test (cons 'begin ...)]))) + +(define unless + (macro (test ...) + (eval ['if ['not test] (cons 'begin ...)]))) + + (define do-count (lambda (count lam) (for-each lam (range count)))) (define x -5) (while (< x 5) (display-lines x) (set! x (+ x 1))) +(when (> x 0) (display "X is " x " (which is greater than 0)\n") (display "Yay!\n")) +(unless (< x 0) (display "X is " x "(which is greater than 0)\n") (display "Yay!\n")) + (do-count 5 (lambda (x) (display-lines (+ x 1)))) (display-lines (let ((a 12)(b 3)) (+ a b)))