From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Rob Browning Newsgroups: gmane.lisp.guile.bugs Subject: bug#37461: define-generic doesn't promote equal? to generic Date: Sat, 21 Sep 2019 10:15:41 -0500 Message-ID: <87lfuh3cki.fsf@trouble.defaultvalue.org> References: <87lfukz48d.fsf@trouble.defaultvalue.org> <87blvfzx1f.fsf@trouble.defaultvalue.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="224090"; mail-complaints-to="usenet@blaine.gmane.org" Cc: control@debbugs.gnu.org To: 37461@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Sat Sep 21 17:16:12 2019 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iBh7M-000w9O-4Q for guile-bugs@m.gmane.org; Sat, 21 Sep 2019 17:16:12 +0200 Original-Received: from localhost ([::1]:42376 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBh7K-0003Om-AV for guile-bugs@m.gmane.org; Sat, 21 Sep 2019 11:16:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40706) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iBh7C-0003OU-Sy for bug-guile@gnu.org; Sat, 21 Sep 2019 11:16:03 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iBh7B-0008BZ-Sp for bug-guile@gnu.org; Sat, 21 Sep 2019 11:16:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:52527) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iBh7B-0008BS-Q2 for bug-guile@gnu.org; Sat, 21 Sep 2019 11:16:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iBh7B-0005F5-J6 for bug-guile@gnu.org; Sat, 21 Sep 2019 11:16:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Rob Browning Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Sat, 21 Sep 2019 15:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37461 X-GNU-PR-Package: guile Original-Received: via spool by 37461-submit@debbugs.gnu.org id=B37461.156907894320117 (code B ref 37461); Sat, 21 Sep 2019 15:16:01 +0000 Original-Received: (at 37461) by debbugs.gnu.org; 21 Sep 2019 15:15:43 +0000 Original-Received: from localhost ([127.0.0.1]:33113 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iBh6s-0005EN-I1 for submit@debbugs.gnu.org; Sat, 21 Sep 2019 11:15:42 -0400 Original-Received: from defaultvalue.org ([45.33.119.55]:47196 ident=postfix) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iBh6r-0005ED-7W; Sat, 21 Sep 2019 11:15:41 -0400 Original-Received: from trouble.defaultvalue.org (localhost [127.0.0.1]) (Authenticated sender: rlb@defaultvalue.org) by defaultvalue.org (Postfix) with ESMTPSA id 5EDA320317; Sat, 21 Sep 2019 10:15:40 -0500 (CDT) Original-Received: by trouble.defaultvalue.org (Postfix, from userid 1000) id D20C414E068; Sat, 21 Sep 2019 10:15:41 -0500 (CDT) In-Reply-To: <87blvfzx1f.fsf@trouble.defaultvalue.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:9431 Archived-At: retitle 37461 Methods added to primitive generics don't always work thanks Rob Browning writes: > A re-export doesn't affect the module using the re-exporter, and export > and replace both fail with "Unbound variable: equal?", even though > there's a (define equal? ...) in the module. It looks like equal? isn't changed by define-generic, etc. because it already has "generic-capability?". And in fact, I can see that defining a method on it does alter its primitive-generic-generic, but then dispatch to the new method doesn't always seem to work (or perhaps I just misunderstand the dispatch rules). Here a one argument specialization doesn't work, but a two argument specialization does -- for new classes, but not for a "standard" class like : scheme@(guile-user)> (use-modules (oop goops)) scheme@(guile-user)> (primitive-generic-generic equal?) $1 = #< equal? (1)> scheme@(guile-user)> (define-class () (data)) scheme@(guile-user)> (define-method (equal? (x )) 'x) scheme@(guile-user)> (primitive-generic-generic equal?) $2 = #< equal? (2)> scheme@(guile-user)> (equal? (make )) $3 = #t scheme@(guile-user)> (define-method (equal? (x ) (y )) 'x) $4 = #< equal? (3)> scheme@(guile-user)> (equal? (make ) (make )) $5 = x scheme@(guile-user)> (define-method (equal? (x ) (y )) 'x) $6 = #< equal? (4)> scheme@(guile-user)> (equal? "x" "y") $7 = #f Thanks -- Rob Browning rlb @defaultvalue.org and @debian.org GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4