1
2
3
4
5
6
7
8
9
10
11
12
13
|
; [ʞ] lisp-macro
; enable use of the define-macro syntax
; - example -
; (define-macro (if-or-f . body)
; `(if ,(car body) ,(cadr body) #f))
(define-syntax define-macro
(er-macro-transformer (lambda (exp r c)
`(define-syntax ,(caadr exp)
(er-macro-transformer
(lambda (,(cdadr exp) id-rename id-compare)
(let ((,(cdadr exp) (cdr ,(cdadr exp))))
,@(cddr exp))))))))
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
; [ʞ] lisp-macro
; ~ lexi hale <lexi@hale.su>
; © affero general public license
; > (load "lib/lisp-macro.scm")
; enable use of the define-macro syntax in chicken scheme
; ex: (define-macro (if-or-f . body)
; `(if ,(car body) ,(cadr body) #f))
(define-syntax define-macro
(er-macro-transformer (lambda (exp r c)
`(define-syntax ,(caadr exp)
(er-macro-transformer
(lambda (,(cdadr exp) id-rename id-compare)
(let ((,(cdadr exp) (cdr ,(cdadr exp))))
,@(cddr exp))))))))
|