WIP, trying to understand why macro is failing

This commit is contained in:
Justin Ethier 2015-08-04 23:04:39 -04:00
parent 5b997fe0a8
commit 8c3d5347ab
2 changed files with 19 additions and 6 deletions

View file

@ -914,7 +914,7 @@
;; return some value such as #t or nil as a placeholder, since the
;; define-syntax form would not be carried forward in the compiled code
((define-syntax? exp) ;; TODO: not good enough, should do error checking, and make sure list is big enough for cadr
(trace:info `(define-syntax ,exp))
;(trace:info `(define-syntax ,exp))
(let* ((name (cadr exp))
(trans (caddr exp))
(body (cadr trans)))

View file

@ -1,11 +1,24 @@
(import (scheme base)
(scheme write))
(define-syntax test
;(define-syntax test
; (er-macro-transformer
; (lambda (expr rename compare)
; `((lambda ()
; (write "testing")
; (write (quote ,(cdr expr))))))))
;
; WTF is the macro unable to be evaluated when the same code works as part of *defined-macros*???
;
(define-syntax test
(er-macro-transformer
(lambda (expr rename compare)
(write "testing")
(write expr))))
(lambda (expr rename compare)
(cond ((null? (cdr expr)))
((null? (cddr expr)) (cadr expr))
(else (list (rename 'if) (cadr expr)
(cons (rename 'and) (cddr expr))
#f))))))
(test 1 2 3)
(test 'done)
;(test 'done)
'done