On Mon 22 Aug 2016 03:03, David Pirotte <da...@altosw.be> writes: > Hello Guilers, > Hi Andy, > > Here below a mini module [1], which raises an exception [2] using > 2.1.3.104-8f2f8 (it > compiles fine using 2.0.12). It looks a bit of a 'silly' module but the real > one > here do need this combination, I just minimized it for tracking purposes... > > For info, if I either comment the use of srfi-1, or merge-generics, _or_ the > for-each > expression, it compiles fine. I also tried foo to just do a (filter-map > string? > words) and no for-each, to circumvent the problem as far as I could, and it > compiles fie as well: it appears there is a side effect of the for-each > version from > srfi-1 over the core version, when using goops and declaring #:duplicates > (merge-generics ...). > > Cheers, > David > > [1] > > (define-module (foo) > #:use-module (srfi srfi-1) > #:use-module (oop goops) > > #:duplicates (merge-generics > replace > warn-override-core > warn > last)
So here you are importing two definitions of for-each: one from (guile) and one from (srfi srfi-1). They are both normal procedures. What should happen? I guess merge-generics should fail to do anything. I suppose that is the intention of this method in (oop goops): (define-method (merge-generics (module <module>) (name <symbol>) (int1 <module>) (val1 <top>) (int2 <module>) (val2 <top>) (var <top>) (val <top>)) #f) And yet you get: ERROR: No applicable method for #<<generic> merge-generics (3)> in call (merge-generics #<directory (foo) 204c480> for-each #<interface (guile) 20f1ea0> #<procedure for-each (f l) | (f l1 l2) | (f l1 . rest)> #<interface (srfi srfi-1) 21322d0> #<procedure for-each (f l) | (f l1 l2) | (f l1 . rest)> #f #f) This sounds like a bug to me, surely the method should match. On the other hand this looks bogus to me: scheme@(foo)> (class-of (resolve-interface '(guile))) $4 = #<<class> <module> 244bbd0> scheme@(foo)> (class-of (resolve-interface '(guile))) $5 = #<<class> <module> 244b900> Why are we getting two distinct values for the class? Further investigation necessary. Andy