On 6 Jan 2011, at 19:18, Patrick Bernaud wrote:

I have a case where a macro is defined in a file that is then loaded
by another which makes use of the macro. And it produces a 'wrong type
to apply' error from the VM.

(Works fine with GUILE_AUTO_COMPILE=0 and compiled files removed).

For example, with the 'when' macro from the manual:

-%<---- when.scm ----%<-
(define-macro (when cond exp . rest)
`(if ,cond
     (begin ,exp . ,rest)))
-%<---- when.scm ----%<-

-%<---- test.scm ----%<-
(load "when.scm")
(when #t (display "Launching missiles!\n"))
-%<---- test.scm ----%<-

If you are writing your own macro, I find 'define-syntax' easier:

(use-syntax (ice-9 syncase))

(define-syntax when
 (syntax-rules ()
   ((when cond x ...)
     (if cond (begin x ...)))
))

(when #t (display "Launching missiles!\n"))



Reply via email to