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