Hi,

I don't have experience with macros. But I get this error trying TeXmacs with 
Guile 2.x:

 ERROR: Syntax error:
;;; kernel/boot/boot.scm:57:4: definition in expression context, where 
definitions are not allowed, in form (define-syntax define-public-macro (lambda 
(y) #f #((macro-type . defmacro) (defmacro-args args)) (syntax-case y () ((_ . 
args) (let ((v (syntax->datum (syntax args)))) (datum->syntax y (apply (lambda 
(head . body) (quasiquote (define-public (unquote (car head)) 
(procedure->memoizing-macro (lambda (cmd env) (apply (lambda (unquote (cdr 
head)) (unquote-splicing body)) (cdr cmd))))))) v)))))))

The offending code is:

(if (guile-a?)
    (define-macro (define-public-macro head . body)
      `(define-public ,(car head)
         ;; FIXME: why can't we use procedure->macro
         ;; for a non-memoizing variant?
         (procedure->memoizing-macro
          (lambda (cmd env)
            (apply (lambda ,(cdr head) ,@body) (cdr cmd)))))))

Any advice? Thanks.

Germán.


Reply via email to