* Re: new module directive? [was: Three real-life questions]
@ 2004-04-16 6:06 Michael Burschik
2004-04-16 13:58 ` new module directive? Andreas Rottmann
0 siblings, 1 reply; 3+ messages in thread
From: Michael Burschik @ 2004-04-16 6:06 UTC (permalink / raw)
Andreas Rottmann says:
> The hairy thing is when you want to override (extend) a non-generic
> with a generic. #:re-export won't work in this case and #:export gives
> a warning.
This is pretty nasty, especially since #:re-export gives no indication of
not working, and I did not, in fact, notice that it does not. I extended
equal? with a generic and it seemed to work as expected when I used
#:re-export. Was this simply a coincidence, or is equal? generic anyway?
Regards
Michael Burschik
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: new module directive?
2004-04-16 6:06 new module directive? [was: Three real-life questions] Michael Burschik
@ 2004-04-16 13:58 ` Andreas Rottmann
0 siblings, 0 replies; 3+ messages in thread
From: Andreas Rottmann @ 2004-04-16 13:58 UTC (permalink / raw)
"Michael Burschik" <Burschik@lotto-berlin.de> writes:
> Andreas Rottmann says:
>
>> The hairy thing is when you want to override (extend) a non-generic
>> with a generic. #:re-export won't work in this case and #:export gives
>> a warning.
>
> This is pretty nasty, especially since #:re-export gives no indication of
> not working, and I did not, in fact, notice that it does not. I extended
> equal? with a generic and it seemed to work as expected when I used
> #:re-export. Was this simply a coincidence, or is equal? generic anyway?
>
As soon GOOPS is loaded, equal? is changed to a
"primitive-generic". IMHO, it would be nice if that would happen for
every procedure...
guile> equal?
#<primitive-procedure equal?>
guile> (use-modules (oop goops))
guile> equal?
#<primitive-generic equal?>
Andy
--
Andreas Rottmann | Rotty@ICQ | 118634484@ICQ | a.rottmann@gmx.at
http://yi.org/rotty | GnuPG Key: http://yi.org/rotty/gpg.asc
Fingerprint | DFB4 4EB4 78A4 5EEE 6219 F228 F92F CFC5 01FD 5B62
Make free software, not war!
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
* Three real-life questions
@ 2004-04-06 12:01 Michael Burschik
2004-04-09 11:32 ` Andy Wingo
0 siblings, 1 reply; 3+ messages in thread
From: Michael Burschik @ 2004-04-06 12:01 UTC (permalink / raw)
Dear list readers,
maybe someone on the list could answer these three questions:
1. How should one export, or re-export modified generic functions? Using
:export seems to work as expected, although guile complains about the use of
deprecated features. Using :re-export gets rid of the complaints, but does
not seem to be documented in the guile manual. So what is the correct way to
handle generic functions in modules?
2. Is there a preferred source documentation system for guile (something
like schematics schemedoc, or bigloo's mole)?
3. Is there a preferred logging solution for guile (something like log4j and
friends)?
Regards
Michael Burschik
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Three real-life questions
2004-04-06 12:01 Three real-life questions Michael Burschik
@ 2004-04-09 11:32 ` Andy Wingo
2004-04-13 16:33 ` new module directive? [was: Three real-life questions] Andreas Rottmann
0 siblings, 1 reply; 3+ messages in thread
From: Andy Wingo @ 2004-04-09 11:32 UTC (permalink / raw)
Hi Michael,
On Tue, 2004-04-06 at 13:01, Michael Burschik wrote:
> 1. How should one export, or re-export modified generic functions?
> Using :export seems to work as expected, although guile complains
> about the use of deprecated features. Using :re-export gets rid of the
> complaints, but does not seem to be documented in the guile manual. So
> what is the correct way to handle generic functions in modules?
If a module that you use supplies a binding, and you want that binding
to be available for users of your module, you must re-export it. This
applies to generics as well as other bindings. Lack of documentation on
this is a bug, though!
> 2. Is there a preferred source documentation system for guile
> (something like schematics schemedoc, or bigloo's mole)?
I'm pretty ignorant about this -- check ice-9/documentation.scm for
information about the commentary format, but as for function-by-function
documentation I don't know.
> 3. Is there a preferred logging solution for guile (something like
> log4j and friends)?
It seems I am thoroughly ignorant today ;) Dunno.
Cheers,
--
Andy Wingo <wingo@pobox.com>
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
* new module directive? [was: Three real-life questions]
2004-04-09 11:32 ` Andy Wingo
@ 2004-04-13 16:33 ` Andreas Rottmann
0 siblings, 0 replies; 3+ messages in thread
From: Andreas Rottmann @ 2004-04-13 16:33 UTC (permalink / raw)
Andy Wingo <wingo@pobox.com> writes:
> Hi Michael,
>
> On Tue, 2004-04-06 at 13:01, Michael Burschik wrote:
>> 1. How should one export, or re-export modified generic functions?
>> Using :export seems to work as expected, although guile complains
>> about the use of deprecated features. Using :re-export gets rid of the
>> complaints, but does not seem to be documented in the guile manual. So
>> what is the correct way to handle generic functions in modules?
>
> If a module that you use supplies a binding, and you want that binding
> to be available for users of your module, you must re-export it. This
> applies to generics as well as other bindings. Lack of documentation on
> this is a bug, though!
>
The hairy thing is when you want to override (extend) a non-generic
with a generic. #:re-export won't work in this case and #:export gives
a warning. Example code:
;; export-test.scm
(define-module (export-test)
#:use-module (oop goops)
#:export (quit))
(define quit (ensure-generic quit))
(define-class <mainloop>)
(define-method (quit (loop <mainloop>))
;; some code here
loop)
Then, the extended quit works as expected:
ivanova:~/tmp/test% guile
guile> (use-modules (export-test) (oop goops))
Using `export' to re-export imported bindings is deprecated. Use `re-export' instead.
(You just re-exported `quit' from `(export-test)'.)
guile> (quit (make <mainloop>))
#<<mainloop> 80891a0>
guile> (quit 66)
ivanova:~/tmp/test% echo $?
66
I'd really like to see an #:override or somesuch module option that
doesn't warn in this case...
Andy
--
Andreas Rottmann | Rotty@ICQ | 118634484@ICQ | a.rottmann@gmx.at
http://yi.org/rotty | GnuPG Key: http://yi.org/rotty/gpg.asc
Fingerprint | DFB4 4EB4 78A4 5EEE 6219 F228 F92F CFC5 01FD 5B62
The best way to accelerate a Windows machine is at 9.81 m/s^2
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-04-16 13:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-16 6:06 new module directive? [was: Three real-life questions] Michael Burschik
2004-04-16 13:58 ` new module directive? Andreas Rottmann
-- strict thread matches above, loose matches on Subject: below --
2004-04-06 12:01 Three real-life questions Michael Burschik
2004-04-09 11:32 ` Andy Wingo
2004-04-13 16:33 ` new module directive? [was: Three real-life questions] Andreas Rottmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).