From 8c3d5347ab700a02ae57eba92c31e86a67fa63a3 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 4 Aug 2015 23:04:39 -0400 Subject: [PATCH] WIP, trying to understand why macro is failing --- scheme/cyclone/transforms.scm | 2 +- test2.scm | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/scheme/cyclone/transforms.scm b/scheme/cyclone/transforms.scm index 0b9864fb..c1abde81 100644 --- a/scheme/cyclone/transforms.scm +++ b/scheme/cyclone/transforms.scm @@ -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))) diff --git a/test2.scm b/test2.scm index 7aaef0da..32b92a26 100644 --- a/test2.scm +++ b/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