Mark H Weaver <m...@netris.org> wrote: > The proper solution is as follows: > > * Every generic function must be defined (using 'define-generic') and > exported from one (and only one) module. > > * Every module that uses a generic function, or adds a method to it (and > that includes slot accessors), must first import the generic function > from the (one) module that exports it. > > Think of a generic function as a normal procedure that contains an > internal table of methods. Like any other procedure, there's a single > module that defines it and exports it. The fact that some modules add > methods to these internal tables does not mean that it is appropriate to > export the procedure from those other modules.
Brent Pinkney <b...@4dst.com> wrote: > How does that work in an environment where you are using third party > libraries, lice srfi, ice-9, guile-lib, etc as well as your own code. I'm sorry, I don't understand what you mean here. > How could one possibly ensure that the other libraries export say > "format" correctly - perhaps they are purists and not even aware of > the goops modules. 'format' is not a generic function. What does that have to do with this discussion? > I think guile has it backwards here - goops must not break quiles > modules when someone imports a guile generic. Again, I don't understand. What do you mean by "break guile's modules"? Can you please elaborate? Thanks, Mark