/src/basic-macros/source.scm
http://github.com/dharmatech/abstracting · Scheme · 37 lines · 21 code · 10 blank · 6 comment · 0 complexity · a444e5936bc9f0e898ebf06564b904bb MD5 · raw file
- ;; (define-macro (when test . body)
- ;; `(if ,test (begin ,@body)))
- ;; (define-macro (push! list elt)
- ;; `(set! ,list (cons ,elt ,list)))
- (define-syntax when
- (syntax-rules ()
- ((when test expr ...)
- (if test
- (begin
- expr
- ...)))))
- (define-syntax push!
- (syntax-rules ()
- ((push! list elt)
- (set! list (cons elt list)))))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (define-syntax list-push!
- (syntax-rules ()
- ((list-push! list elt)
- (set! list (cons elt list)))))
- (define-syntax list-pop!
- (syntax-rules ()
- ((list-pop! list)
- (let ((elt (car list)))
- (set! list (cdr list))
- elt))))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;