guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: guile-1.5.1 and deprecated ...


From: Thomas Wawrzinek
Subject: Re: guile-1.5.1 and deprecated ...
Date: Wed, 22 Aug 2001 15:49:28 +0200 (MEST)

Hi!

 > > ISTR there was a problem when exporting a method from a GOOPS module, and
 > > then later exporting a method with the same name, the latter should
 > > effectively overwrite the first definition IIRC. Don't you have problems 
 > > when
 > > importing modules in arbitrary order ?!
 > 
 > well, i am <porting> my coded to guile 1.5.1, and just descovered these 
 > little
 > problems
 > 
 > i am just very surprised that we have to export re-export, because I write
 > independent modules, that may be later used seperately and/or in conjunction
 > with one another.
 > 

Well, you definitely have trouble with this:

;; Example code.
(define-module (a)
  :use-module (oop goops))

(define-method (foo (o <vector>))
  (display "VETCOR: ") (display o) (newline))

(export foo)

(define-module (b)
  :use-module (oop goops))

(define-method (foo (o <list>))
  (display "LIST: ") (display o) (newline))

(export foo)

(define-module (main)
  :use-module (oop goops)
  :use-module (a)
  :use-module (b))

(foo #(1 2 3))
(foo '(1 2 3))

But you are probably doing something like this:

;; Example code:
(define-module (a)
  :use-module (oop goops))

(define-method (foo (o <vector>))
  (display "VETCOR: ") (display o) (newline))

(export foo)

(define-module (b)
  :use-module (oop goops)
  :use-module (a))

(define-method (foo (o <list>))
  (display "LIST: ") (display o) (newline))

(re-export foo)

(define-module (main)
  :use-module (oop goops)
  :use-module (b))

(foo #(1 2 3))
(foo '(1 2 3))

In this simple case there is no problem with a layered structure where some
module defines a method for the first time, and all others use re-export.

I think (maybe naively) it should be possible to identify this base level in
your modules, but I don't think it is necessarily easy.

If for some reason this is really impossible, then re-export might be a real
problem. If so, I'm afraid I can't solve it.

Regards, 

                        Thomas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]