PageRenderTime 5ms CodeModel.GetById 2ms app.highlight 1ms RepoModel.GetById 1ms app.codeStats 0ms

/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
 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