Ciao,
with GOOPS I am adding methods to FOR-EACH; with:
(define-method (for-each (proc <applicable>)
(L <list>)
(S <stream>) . args)
(apply stream-for-each proc L S args))
I see a strange bug: STREAM-FOR-EACH is my C implemented
procedure and it completes successfully, but before FOR-EACH
returns it looks like another FOR-EACH (I guess the Guile's
built in) is invoked with the same arguments.
My understanding of the prolem is:
1. the generic FOR-EACH function is invoked;
2. the generic FOR-EACH function selects the correct method
for the arguments: my implementation;
3. my method is invoked and it completes successfully;
4. before the generic FOR-EACH returns something bad
happens.
The problem does not show when I test:
(define-method (for-each (proc <applicable>)
(S <stream>) . args)
(apply stream-for-each proc S args))
The problem disappears if I prepend:
(define saved-for-each for-each)
(define-generic for-each)
(define-method (for-each (proc <applicable>) . args)
(apply saved-for-each proc args))
that is: if I make FOR-EACH a generic function, rather than
relying on the primitive generic functionality.
This is probably caused by a mess in my C code, but I am
failing to find the problem. Can someone point me towards
the code in Guile that does method invocation? It should be
somewhere in the evaluator...
TIA
--
Marco Maggi
"Now feel the funk blast!"
Rage Against the Machine - "Calm like a bomb"
_______________________________________________
Guile-user mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/guile-user