/src/basic-macros/source.scm
Scheme | 37 lines | 21 code | 10 blank | 6 comment | 0 complexity | a444e5936bc9f0e898ebf06564b904bb MD5 | raw file
Possible License(s): BSD-3-Clause
1 2;; (define-macro (when test . body) 3;; `(if ,test (begin ,@body))) 4 5;; (define-macro (push! list elt) 6;; `(set! ,list (cons ,elt ,list))) 7 8(define-syntax when 9 (syntax-rules () 10 ((when test expr ...) 11 (if test 12 (begin 13 expr 14 ...))))) 15 16(define-syntax push! 17 (syntax-rules () 18 ((push! list elt) 19 (set! list (cons elt list))))) 20 21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 22 23(define-syntax list-push! 24 (syntax-rules () 25 ((list-push! list elt) 26 (set! list (cons elt list))))) 27 28(define-syntax list-pop! 29 (syntax-rules () 30 ((list-pop! list) 31 (let ((elt (car list))) 32 (set! list (cdr list)) 33 elt)))) 34 35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 36 37