mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
WIP, trying to understand why macro is failing
This commit is contained in:
parent
5b997fe0a8
commit
8c3d5347ab
2 changed files with 19 additions and 6 deletions
|
@ -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)))
|
||||
|
|
23
test2.scm
23
test2.scm
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue