William Xu <[EMAIL PROTECTED]> writes:

> guile> (use-modules ((oop goops) :renamer (symbol-prefix-proc 'oop/goops:)))
>
> This seems okay. While, when i try the first example in GOOPS Info, 
>
> guile> (oop/goops:define-method (+ (x <string>) (y <string>))
>        (string-append x y))
> <unnamed port>: In expression (add-method! + (method # #)):
> <unnamed port>: Unbound variable: add-method!
> ABORT: (unbound-variable)
>
> Type "(backtrace)" to get more information or "(debug)" to enter the debugger.
> guile> 
>
> Seems i can't add a renamer for goops module, but make it available on
> top-level? While, GOOPS is not built in guile, is it?
>
> So what's the point here?

Hmm, it looks like the point is that renaming won't work when a module
defines a macro (with either defmacro or define-macro) whose expansion
includes one of that module's own bindings.

Interesting problem.  I think it should work for the macro definition
to unquote such bindings, so that they are looked up in the module's
environment at definition time rather than later in the caller's
environment.  In other words,

(define-macro (whatever ...)
  `(,what* ...))

rather than

(define-macro (whatever ...)
  `(what* ...))

To make progress in the short term, though, I think you'll have to use
(oop goops) without a renamer.

    Neil 



_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user

Reply via email to