mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 05:39:18 +02:00
Nix er-macro-transformer*, extend syntax-rules for identifier macros
This commit is contained in:
parent
7a4e793e49
commit
86e8b56289
1 changed files with 3 additions and 11 deletions
|
@ -143,21 +143,13 @@
|
|||
(lambda (expr use-env mac-env)
|
||||
(f expr mac-env))))
|
||||
|
||||
(define er-macro-transformer*
|
||||
(define er-macro-transformer
|
||||
(lambda (f)
|
||||
(lambda (expr use-env mac-env)
|
||||
(f expr
|
||||
(make-renamer mac-env)
|
||||
(lambda (x y) (identifier=? use-env x use-env y))))))
|
||||
|
||||
(define er-macro-transformer
|
||||
(lambda (f)
|
||||
(er-macro-transformer*
|
||||
(lambda (expr rename compare)
|
||||
(if (not (pair? expr))
|
||||
(error "invalid use of non-identifier macro outside operator position" expr)
|
||||
(f expr rename compare))))))
|
||||
|
||||
(define-syntax cond
|
||||
(er-macro-transformer
|
||||
(lambda (expr rename compare)
|
||||
|
@ -881,8 +873,8 @@
|
|||
(set! count (+ count 1))
|
||||
(rename (string->symbol (string-append s (%number->string count)))))
|
||||
(define (expand-pattern pat tmpl)
|
||||
(let lp ((p (cdr pat))
|
||||
(x (list _cdr _expr))
|
||||
(let lp ((p pat)
|
||||
(x _expr)
|
||||
(dim 0)
|
||||
(vars '())
|
||||
(k (lambda (vars)
|
||||
|
|
Loading…
Add table
Reference in a new issue