Received: (at 19459) by debbugs.gnu.org; 27 Jun 2016 07:47:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 27 03:47:14 2016 Received: from localhost ([127.0.0.1]:57420 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bHRGE-0007tV-Bq for submit <at> debbugs.gnu.org; Mon, 27 Jun 2016 03:47:14 -0400 Received: from pb-sasl1.pobox.com ([64.147.108.66]:64867 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1bHRGD-0007tO-3C for 19459 <at> debbugs.gnu.org; Mon, 27 Jun 2016 03:47:13 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id C402B20300; Mon, 27 Jun 2016 03:47:09 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=urwU8f3VLHI3m+KDePtBq9Fi/Uk=; b=F8buwM LY+Ga4XKyqyaCNcHHk4YCxW6qyqVPlJMstFGKlWZNSkuZ5gXcV/u6SVYvdacat6W lajn7K21iZnZ/bGlj44Nb1tDLrUXDxrnHyG+mn7b3tPARF2hequ1Y5y4LCxS87tK OQviWwK8ywAuVhltxh8bPRHRBLChMLunH9Vzo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=eR2cABn+lMDw0lGyVmpbuBAqKQMV2VN2 +Bgq7GoO8HxPUSc43WLK5HGS8ChJbYgiwr4cQhCMoARX7UdosysFkqffNLoQgZAY nSSVk+MhyDq0wvKgCxIt35vycoqlxGx7vgEgn7CyqTeC58OzY0R9dPiHVBE/sypx AdXF+3Eoy44= Received: from pb-sasl1.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id BC73C202FE; Mon, 27 Jun 2016 03:47:09 -0400 (EDT) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl1.pobox.com (Postfix) with ESMTPSA id D4C6D202FC; Mon, 27 Jun 2016 03:47:08 -0400 (EDT) From: Andy Wingo <wingo@HIDDEN> To: David Pirotte <david@HIDDEN> Subject: Re: bug#19459: #:export does not honor the merge-generics contract References: <20141228162024.048ca208@capac> <87vb11q8ir.fsf@HIDDEN> <20160623162321.448e47af@capac> <87oa6rllfg.fsf@HIDDEN> <20160623181103.00e09d95@capac> <87twgjji1k.fsf@HIDDEN> <20160626235455.7726d721@capac> Date: Mon, 27 Jun 2016 09:47:01 +0200 In-Reply-To: <20160626235455.7726d721@capac> (David Pirotte's message of "Sun, 26 Jun 2016 23:54:55 -0300") Message-ID: <87d1n39iq2.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: 59F5A60A-3C3B-11E6-B682-C1836462E9F6-02397024!pb-sasl1.pobox.com X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 19459 Cc: 19459 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Mon 27 Jun 2016 04:54, David Pirotte <david@HIDDEN> writes: > Hello Andy, > >> >> However... I believe merge-generics is intended to merge duplicate >> >> imported bindings. It does not provide a copy-on-write version of an >> >> imported generic, if that generic was not duplicated in the imports. >> >> There is no facility in GOOPS to do that, AFAIU. > >> > It is a module bug, not a GOOPS bug, see my 'personal/local' fix: the problem is >> > that once the user uses #:export, guile's module system create a new binding, >> > and it should not ... [hence this confusion as well: as it is: the module must >> > merge its definition with the imported ones, even if it imported only 1 >> > generic ... because of a module bug...] > >> I... I just think you're wrong here, sorry :/ That's just not how the >> system works. If you #:export an identifier in a module, you create a >> fresh local binding, and that binding doesn't implicitly extend an >> imported binding, merge-generics or no. Merge-generics only operates on >> the import interface of a module. > > I don't think so, and I feel sorry too ;/. We disagree, which is different, and > nobody is 'right' or 'wrong' here. [and I know 'how the system works, I described > it that in the original email, I'd like to change that, hence this thread ...] > > IMO, this should never fail: > > ,use (b) > make <b> There are plenty of reasons for (make foo) to fail in the abstract -- from bad logic in the initializers, to the initializer using unbound variables, to many other things. In this case your initializer is: (define-method (initialize (self <b>) initargs) (next-method) (let ((a (make <a>))) (set-width self (get-width a)) #;(add-child b a))) However in this module you have done an #:export get-width on B, and so the get-width that you are calling in module (b) has no methods for values of type A. > Your last sentence states that merge-generics only operates on the import interface > of a module: that is the feature I'm referring to to claim the above: > > [ using #:export ] > > t0 the system creates new 'empty' binding > at some point 'it' knows it is a gf > ti it imports (a) > > now the (b) module interface is facing a duplicate gf binding, and according > to the user settings wrt to this, it has to merge. I'm not sure from this whether you think the current code has a bug or a feature limitation. For me :) I have it clear in my mind that there does not appear to be a bug here. merge-generics only operates over bindings that are imported in a module: module A imports modules B and C, and B and C both export a generic `foo'. Or one is a generic and one is not, or something like that. merge-generics *does not* merge an imported binding and a local definition. It does seem like you want the system to work in a different way, and that position is understandable -- however designing and implementing such a thing is very low on my priority list right now and I doubt I will get to it any time soon if at all. If you or someone else wants to implement this, the first step would be to come up with a design including a patch to the documentation and mail the list. I think I would want the design before seeing a patch. Regards, Andy
bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.Received: (at 19459) by debbugs.gnu.org; 27 Jun 2016 02:55:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jun 26 22:55:25 2016 Received: from localhost ([127.0.0.1]:57294 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bHMhp-0007Q3-4M for submit <at> debbugs.gnu.org; Sun, 26 Jun 2016 22:55:25 -0400 Received: from maximusconfessor.all2all.org ([79.99.200.102]:47530) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <david@HIDDEN>) id 1bHMhl-0007Pr-Qq for 19459 <at> debbugs.gnu.org; Sun, 26 Jun 2016 22:55:23 -0400 Received: from localhost (unknown [192.168.0.2]) by maximusconfessor.all2all.org (Postfix) with ESMTP id 76D16A04C114; Mon, 27 Jun 2016 04:55:09 +0200 (CEST) Received: from maximusconfessor.all2all.org ([192.168.0.1]) by localhost (maximusconfessor.all2all.org [192.168.0.2]) (amavisd-new, port 10024) with ESMTP id Z3vnEo6vN7r0; Mon, 27 Jun 2016 04:55:05 +0200 (CEST) Received: from capac (unknown [177.40.205.170]) by maximusconfessor.all2all.org (Postfix) with ESMTPSA id 0AD8FA04C10C; Mon, 27 Jun 2016 04:55:01 +0200 (CEST) Date: Sun, 26 Jun 2016 23:54:55 -0300 From: David Pirotte <david@HIDDEN> To: Andy Wingo <wingo@HIDDEN> Subject: Re: bug#19459: #:export does not honor the merge-generics contract Message-ID: <20160626235455.7726d721@capac> In-Reply-To: <87twgjji1k.fsf@HIDDEN> References: <20141228162024.048ca208@capac> <87vb11q8ir.fsf@HIDDEN> <20160623162321.448e47af@capac> <87oa6rllfg.fsf@HIDDEN> <20160623181103.00e09d95@capac> <87twgjji1k.fsf@HIDDEN> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; boundary="Sig_/hO.=B9pt+6R8i2_3TBkz90x"; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 19459 Cc: 19459 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --Sig_/hO.=B9pt+6R8i2_3TBkz90x Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hello Andy, > >> However... I believe merge-generics is intended to merge duplicate > >> imported bindings. It does not provide a copy-on-write version of an > >> imported generic, if that generic was not duplicated in the imports. > >> There is no facility in GOOPS to do that, AFAIU. =20 > > It is a module bug, not a GOOPS bug, see my 'personal/local' fix: the p= roblem is > > that once the user uses #:export, guile's module system create a new bi= nding, > > and it should not ... [hence this confusion as well: as it is: the modu= le must > > merge its definition with the imported ones, even if it imported only 1 > > generic ... because of a module bug...] =20 > I... I just think you're wrong here, sorry :/ That's just not how the > system works. If you #:export an identifier in a module, you create a > fresh local binding, and that binding doesn't implicitly extend an > imported binding, merge-generics or no. Merge-generics only operates on > the import interface of a module. I don't think so, and I feel sorry too ;/. We disagree, which is different,= and nobody is 'right' or 'wrong' here. [and I know 'how the system works, I des= cribed it that in the original email, I'd like to change that, hence this thread .= ..] IMO, this should never fail: ,use (b) make <b> Your last sentence states that merge-generics only operates on the import i= nterface of a module: that is the feature I'm referring to to claim the above: [ using #:export ] t0 the system creates new 'empty' binding at some point 'it' knows it is a gf ti it imports (a) now the (b) module interface is facing a duplicate gf binding, and accordi= ng to the user settings wrt to this, it has to merge. Then you tell me 'yep David, internally the system faced an import situatio= n, and ok, let's merge, _but_ #:export must export a fresh new ... I can buy that,= but do we have the technology do implement this senario?=20 I believe, still referring to your last sentence, the above sentence as wel= l and respecting your position, that we should rather create/have global setting 'export-rexport-imported-gf' [or a better name.], WDYT? Happy Hacking, David --Sig_/hO.=B9pt+6R8i2_3TBkz90x Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJXcJV/AAoJEPN0/ZOjBXrXio8H/2cqcZOhIdfiH8dffT6yk+fL 78XQrI4Nmzvfv/u4wTjJ+thqHilqjEQbcLy2JjI1QJNi4IMWQwPsD7pAvVSwt1ix KMxrIVHh/ujOqK8alINV69F9X7+PURMEOwt00IhvfHAjN+Rfg+bB4fbx3qAwjJA8 h++bF6FFdigfbDKKnDtSMg4AqArKWqVobF+6qCAjfV0PvtRFjydqThPosKuSkQhO a4+XHulAL0o0BsRrg0scn05ATV92MlVYZtb7dgTY5jH7v/cwh6PJTQZZKqtBB4HF mwBfSRNxLijIUJuGIoIn3JBOWgISGPquu/ZApxqGcYp/owdDZWi4dmirXcN1GC8= =zcMJ -----END PGP SIGNATURE----- --Sig_/hO.=B9pt+6R8i2_3TBkz90x--
bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.Received: (at 19459) by debbugs.gnu.org; 24 Jun 2016 05:12:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jun 24 01:12:57 2016 Received: from localhost ([127.0.0.1]:53215 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bGJQG-00051j-RS for submit <at> debbugs.gnu.org; Fri, 24 Jun 2016 01:12:57 -0400 Received: from pb-sasl1.pobox.com ([64.147.108.66]:61639 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1bGJQF-00051V-Qc for 19459 <at> debbugs.gnu.org; Fri, 24 Jun 2016 01:12:56 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id A80A526DC6; Fri, 24 Jun 2016 01:12:55 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=OFqLUYE9fCpw0nga7X8IjXOTzwQ=; b=NdXZCC usfhfrsUKrbzuUWlHVg56EoDZBpYTVaxOhpO9xhzPwYBwQaY2qlmJetSOcwBn1Pp RMaLN2EQNuzp4jAfWiCL9Jwb0UmkDWw5eeaDdMj4FX49bxjHbL/zerytJjMELd00 TNb4fIwv8G1MeywO7TnNNCKq0R0rYqTX/zw3o= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=FBEQEba7hjkjBDrmhEcJ7zP+hnh0mVFF CqtoG2TWBZREY43tIGsoUPGQe2wN5UyZ/7O3Uhleq6IUAuL7EpIQWE6YRv299y3Q ip6CJSI21ndS1rHgNaGSS4CSSxI6c4PQ4nCCHf4VYcG8lGf4G58kCB6MLjNIF/lv jyBz6hCeNxU= Received: from pb-sasl1.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id A053526DC5; Fri, 24 Jun 2016 01:12:55 -0400 (EDT) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl1.pobox.com (Postfix) with ESMTPSA id E196D26DC4; Fri, 24 Jun 2016 01:12:54 -0400 (EDT) From: Andy Wingo <wingo@HIDDEN> To: David Pirotte <david@HIDDEN> Subject: Re: bug#19459: #:export does not honor the merge-generics contract References: <20141228162024.048ca208@capac> <87vb11q8ir.fsf@HIDDEN> <20160623162321.448e47af@capac> <87oa6rllfg.fsf@HIDDEN> <20160623181103.00e09d95@capac> Date: Fri, 24 Jun 2016 07:02:31 +0200 In-Reply-To: <20160623181103.00e09d95@capac> (David Pirotte's message of "Thu, 23 Jun 2016 18:11:03 -0300") Message-ID: <87twgjji1k.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: 4EDA2156-39CA-11E6-B6A7-C1836462E9F6-02397024!pb-sasl1.pobox.com X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 19459 Cc: 19459 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.4 (-) On Thu 23 Jun 2016 23:11, David Pirotte <david@HIDDEN> writes: >> However... I believe merge-generics is intended to merge duplicate >> imported bindings. It does not provide a copy-on-write version of an >> imported generic, if that generic was not duplicated in the imports. >> There is no facility in GOOPS to do that, AFAIU. > > It is a module bug, not a GOOPS bug, see my 'personal/local' fix: the problem is > that once the user uses #:export, guile's module system create a new binding, and it > should not ... [hence this confusion as well: as it is: the module must merge its > definition with the imported ones, even if it imported only 1 generic ... because of > a module bug...] I... I just think you're wrong here, sorry :/ That's just not how the system works. If you #:export an identifier in a module, you create a fresh local binding, and that binding doesn't implicitly extend an imported binding, merge-generics or no. Merge-generics only operates on the import interface of a module. Andy
bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.Received: (at 19459) by debbugs.gnu.org; 23 Jun 2016 21:11:18 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 23 17:11:18 2016 Received: from localhost ([127.0.0.1]:53066 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bGBuA-0006wq-9A for submit <at> debbugs.gnu.org; Thu, 23 Jun 2016 17:11:18 -0400 Received: from maximusconfessor.all2all.org ([79.99.200.102]:55892) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <david@HIDDEN>) id 1bGBu8-0006wh-BK for 19459 <at> debbugs.gnu.org; Thu, 23 Jun 2016 17:11:16 -0400 Received: from localhost (unknown [192.168.0.2]) by maximusconfessor.all2all.org (Postfix) with ESMTP id 281A3A04C142; Thu, 23 Jun 2016 23:11:15 +0200 (CEST) Received: from maximusconfessor.all2all.org ([192.168.0.1]) by localhost (maximusconfessor.all2all.org [192.168.0.2]) (amavisd-new, port 10024) with ESMTP id 2n3Ah-HXBKGU; Thu, 23 Jun 2016 23:11:10 +0200 (CEST) Received: from capac (unknown [179.210.35.216]) by maximusconfessor.all2all.org (Postfix) with ESMTPSA id 88D8EA04C138; Thu, 23 Jun 2016 23:11:09 +0200 (CEST) Date: Thu, 23 Jun 2016 18:11:03 -0300 From: David Pirotte <david@HIDDEN> To: Andy Wingo <wingo@HIDDEN> Subject: Re: bug#19459: #:export does not honor the merge-generics contract Message-ID: <20160623181103.00e09d95@capac> In-Reply-To: <87oa6rllfg.fsf@HIDDEN> References: <20141228162024.048ca208@capac> <87vb11q8ir.fsf@HIDDEN> <20160623162321.448e47af@capac> <87oa6rllfg.fsf@HIDDEN> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; boundary="Sig_/mBZ/zBXiYnxtDrfmYCpM/ut"; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 19459 Cc: 19459 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --Sig_/mBZ/zBXiYnxtDrfmYCpM/ut Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable > > Hi Andy, > > =20 > >> > (define-module (a) > >> > #:use-module (oop goops) > >> > #:export (<a> > >> > !width > >> > get-width > >> > set-width)) =20 > > =20 > >> Here you export four bindings: one class and three generics. Those > >> three generics have methods on <a>. =20 > > =20 > >> > (define-module (b) > >> > #:use-module (oop goops) > >> > #:use-module (a) =20 > > =20 > >> Here you import the previous four bindings. =20 > > =20 > >> > #:export (<b> > >> > !width > >> > get-width > >> > set-width)) =20 > > =20 > >> However here you declare that you are going to export four new > >> bindings. > >> ... =20 > > > > Under the exact circumstances of the original email, I disagree, see be= low. =20 >=20 > I see. You were expecting for the dynamically setting the > default-duplicate-binding-handler parameter to make a difference. Yes, and it has to: with that setting, at any time in any module, there can= be 1 and only 1 generic function for a given name: but as it is, right now, even with that setting, Guile is exporting 'something' I did not ask to export, Guile is exporting a new binding, that I never asked to create [unless it would not be imported] from the (b) module perspective, I ask Guile to import (a), fill the gener= ic functions with new methods, and export it, these generic functions, not new other ones The symptom of the actual anomaly is very well expressed by my last sentenc= e: "... last but not least, when a user imports (b) and run (make <b>), he is not himself calling set-width or get-width: exported or not, the code being run by make should run within the (b) module, and in the (b) module they c= an be only 1 generic function, with the method of (a) and the method of (b)..= ." This should never raise an exception: scheme@(guile-user)> ,use (b) scheme@(guile-user)> (make <b>) Currently it does if the user used #:export, it does not if he/she does not= export The problem is guile's module system, not GOOPS here > However I think this is maybe not the right way to set this up; see > reasoning in http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D20093. That is/was a totally different bug, but thanks for the fix! I disagree wi= th the comment though, but I will pull, compile test it will take 1 or 2 days... I hope it fixes it! > However... I believe merge-generics is intended to merge duplicate > imported bindings. It does not provide a copy-on-write version of an > imported generic, if that generic was not duplicated in the imports. > There is no facility in GOOPS to do that, AFAIU. It is a module bug, not a GOOPS bug, see my 'personal/local' fix: the probl= em is that once the user uses #:export, guile's module system create a new bindin= g, and it should not ... [hence this confusion as well: as it is: the module must mer= ge its definition with the imported ones, even if it imported only 1 generic ... b= ecause of a module bug...] David --Sig_/mBZ/zBXiYnxtDrfmYCpM/ut Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJXbFBnAAoJEPN0/ZOjBXrXV84IAKgyLdvldWCj5KeP/Lhr06OH 1S5IfTrIzCvuOFe69KYx/qTcbm3WizdEP2pseg1TRwm2HMT6lyUt5AZwtMTR+HBN tZKprozadL0+yniU0BExK6Z5jvVjPb47q2RGxwzP7SoEzi5v1A36fJO52LEkI2P6 +nwEMypQSFBzhK7NjdGNRBf8+wGS+kIw2of+6lKEzf+WKnLjexLiTyz5np8h7NTm LHLjOdx4k5t+58LcKSOP07L97ziC3iT0RMfjvS4/eOiQ33yed6PjrbDCNn5iSTvG 6ej7OFMjz04chu+Ni9ZrchsqCinno5n6HqhqXO+x3CVW8r/x9zql9iBcvs0LceU= =TNUS -----END PGP SIGNATURE----- --Sig_/mBZ/zBXiYnxtDrfmYCpM/ut--
bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.Received: (at 19459) by debbugs.gnu.org; 23 Jun 2016 20:06:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 23 16:06:40 2016 Received: from localhost ([127.0.0.1]:53013 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bGAtc-0005Mk-Bn for submit <at> debbugs.gnu.org; Thu, 23 Jun 2016 16:06:40 -0400 Received: from pb-sasl2.pobox.com ([64.147.108.67]:62318 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1bGAta-0005Mc-KN for 19459 <at> debbugs.gnu.org; Thu, 23 Jun 2016 16:06:39 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 38F69244D9; Thu, 23 Jun 2016 16:06:36 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=TRQCOC+yywRFEB3KFbE14zuYETY=; b=Lbl6oZ AxtOGu+yXI9ZTGVlVlZKOKexAtjD3WhZ5hyuTr483v7uJ9XqrMHlqGu3jpJCQDmc nqR/nfRhWoKrePDFWo/UwekTi0jW8TALoimo2F9tuu8qwKYtNEeLYi7RgQxnwS6g A6rnUrsAYM3iT8Hm4EBDyauf/h0VOdQfVAhjM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=kUklK4C9otXx6jRYyIXyzFm40+hQUC7o UqPcL2s+0Wobbo2oeStAnlQieFHXwh9d3+H20aqlPZ01jsQ4BYZFHWCzH6j2mtlD RurxR45bmHScZZDce8VYNwe15DAwRPQ4O+MMDw+lGvtgn7xRt2NEljJGelLjJYo7 P+JTI4PqPk0= Received: from pb-sasl2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 22C62244D7; Thu, 23 Jun 2016 16:06:36 -0400 (EDT) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl2.pobox.com (Postfix) with ESMTPSA id 448EA244D6; Thu, 23 Jun 2016 16:06:35 -0400 (EDT) From: Andy Wingo <wingo@HIDDEN> To: David Pirotte <david@HIDDEN> Subject: Re: bug#19459: #:export does not honor the merge-generics contract References: <20141228162024.048ca208@capac> <87vb11q8ir.fsf@HIDDEN> <20160623162321.448e47af@capac> Date: Thu, 23 Jun 2016 22:06:27 +0200 In-Reply-To: <20160623162321.448e47af@capac> (David Pirotte's message of "Thu, 23 Jun 2016 16:23:21 -0300") Message-ID: <87oa6rllfg.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: FCB66CF0-397D-11E6-9213-28A6F1301B6D-02397024!pb-sasl2.pobox.com X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 19459 Cc: 19459 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.4 (-) On Thu 23 Jun 2016 21:23, David Pirotte <david@HIDDEN> writes: > Hi Andy, > >> > (define-module (a) >> > #:use-module (oop goops) >> > #:export (<a> >> > !width >> > get-width >> > set-width)) > >> Here you export four bindings: one class and three generics. Those >> three generics have methods on <a>. > >> > (define-module (b) >> > #:use-module (oop goops) >> > #:use-module (a) > >> Here you import the previous four bindings. > >> > #:export (<b> >> > !width >> > get-width >> > set-width)) > >> However here you declare that you are going to export four new >> bindings. >> ... > > Under the exact circumstances of the original email, I disagree, see below. I see. You were expecting for the dynamically setting the default-duplicate-binding-handler parameter to make a difference. However I think this is maybe not the right way to set this up; see reasoning in http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20093. However... I believe merge-generics is intended to merge duplicate imported bindings. It does not provide a copy-on-write version of an imported generic, if that generic was not duplicated in the imports. There is no facility in GOOPS to do that, AFAIU. Did I get it right this time? :) Andy
bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.Received: (at 19459) by debbugs.gnu.org; 23 Jun 2016 19:23:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 23 15:23:40 2016 Received: from localhost ([127.0.0.1]:52998 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bGAE0-0004Hb-AF for submit <at> debbugs.gnu.org; Thu, 23 Jun 2016 15:23:40 -0400 Received: from maximusconfessor.all2all.org ([79.99.200.102]:53415) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <david@HIDDEN>) id 1bGADy-0004HS-5E for 19459 <at> debbugs.gnu.org; Thu, 23 Jun 2016 15:23:38 -0400 Received: from localhost (unknown [192.168.0.2]) by maximusconfessor.all2all.org (Postfix) with ESMTP id 31661A04C13D; Thu, 23 Jun 2016 21:23:36 +0200 (CEST) Received: from maximusconfessor.all2all.org ([192.168.0.1]) by localhost (maximusconfessor.all2all.org [192.168.0.2]) (amavisd-new, port 10024) with ESMTP id ppjsVzsImVpd; Thu, 23 Jun 2016 21:23:31 +0200 (CEST) Received: from capac (unknown [179.210.35.216]) by maximusconfessor.all2all.org (Postfix) with ESMTPSA id A3C25A04C13F; Thu, 23 Jun 2016 21:23:30 +0200 (CEST) Date: Thu, 23 Jun 2016 16:23:21 -0300 From: David Pirotte <david@HIDDEN> To: Andy Wingo <wingo@HIDDEN> Subject: Re: bug#19459: #:export does not honor the merge-generics contract Message-ID: <20160623162321.448e47af@capac> In-Reply-To: <87vb11q8ir.fsf@HIDDEN> References: <20141228162024.048ca208@capac> <87vb11q8ir.fsf@HIDDEN> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; boundary="Sig_/hVPSJ7QlDNQRLHp8jXzEfYl"; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 19459 Cc: 19459 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --Sig_/hVPSJ7QlDNQRLHp8jXzEfYl Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi Andy, > > (define-module (a) > > #:use-module (oop goops) > > #:export (<a> > > !width > > get-width > > set-width)) =20 > Here you export four bindings: one class and three generics. Those > three generics have methods on <a>. > > (define-module (b) > > #:use-module (oop goops) > > #:use-module (a) =20 > Here you import the previous four bindings. > > #:export (<b> > > !width > > get-width > > set-width)) =20 > However here you declare that you are going to export four new > bindings. > ... Under the exact circumstances of the original email, I disagree, see below. From the original email, you only kept the module defs and explains here i= n your answer the expected behavior in normal circumstances: the behavior one can expect from the default Guile configuration. Fine, but that's not the what the original email was complaining about :) > AFAIU there is no bug here. David WDYT? IMO it is a bug, and to be honest, IMO it is a serious one: a user should n= ever have to use #:re-export for generic functions once he/she did ask to merge dupli= cate generics, because under this setting, there can be 1 and only 1 generic fun= ction, at any time in any module. Under these circumstances, it is the generic functi= on as the module 'sees it' that the user export, not the generic function as the modu= le sees it before import(s) if imported, then that generic is 'filled in' with new methods, it is _not_ created [should not be created], hence #:export is the 'culprit', because = as it is it does not look if a generic exists and create a new one arbitraril= y, against the user 'wish'. It can only do so if there is no imported one. So, IMO, under the '(merge-generics ...) setting of the original email (b) = exports 1 new binding and 3 generic functions that were already defined by (a), but/a= nd 'filled' with 3 additional methods. The module (b) exports the generic func= tion 'as it has it'. There is another way, maybe, to look at this anomaly: if you comment the ex= port for get-width and set-width from the (b) module, it works: scheme@(guile-user)> ,use (b) scheme@(guile-user)> (make <b>) $4 =3D #<<b> 2051a40> because within the module (b), the generics set-width and get-width were im= ported from (a), not created [or 'immediately' merged, implementation detail...], = and filed with the (b) methods. #:export however dismantle this to export a new gener= ic [but the user ask to merge them, so it breaks the user 'contract'] only containi= ng the (b) methods, which is a bug. Last but not least, when a user imports (b) and run (make <b>), he is not h= imself calling set-width or get-width: exported or not, the code being run by make= should run within the (b) module, and in the (b) module the generic functions have= been merged,, so can not [should] raise an error. If you follow your idea/positi= on, it should only raise an error if I do (get-width (make <a>)) [but then the sys= tem might raise the undefined <a> class first..., but you get the idea I guess. FIWIW, It's been years that I don't use #:export because of this bug, I def= ined my own g-export syntax, based on guile's module source code, here: http://git.savannah.gnu.org/cgit/grip.git/tree/grip/g-export.scm It would be really good if it be fixed in 2.0.12 and master though. Cheers, David --Sig_/hVPSJ7QlDNQRLHp8jXzEfYl Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJXbDcpAAoJEPN0/ZOjBXrXhPMH/REXriGmZ/2ClsL1fRKQ03FI vq67r/ZZS4V+oHvFhtXY8/crhKJdlo89LydsvBIWPn0zM3XAoCjFdCFjgvbUJrFe 5+CFH4n/D3ii9pjRqawRU7cGZHs9epgatmZEcCl+Gx/A1zkK17eMgXthYtR2hcxy SO8R1E4t1qJvir1GK9bmX1Lu0NnZ/JD6mT+qDoVFNU88H2hvSsAxYH/8eh7kLCz+ CSL/Q4qzRPnEiHeGVadjq8UwhW0Qa1msh2p/IeWfTMMpoP8cE5fMNPLacImEOhSX fOvSD4aylrGRZjyYGCvDmGb9/NCAcgnV1YT2/rUSuqwn/5ouw4CfwPQnjj1XtX4= =/hoT -----END PGP SIGNATURE----- --Sig_/hVPSJ7QlDNQRLHp8jXzEfYl--
bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.Received: (at 19459) by debbugs.gnu.org; 22 Jun 2016 20:22:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 22 16:22:01 2016 Received: from localhost ([127.0.0.1]:51527 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bFoev-0005uU-Eo for submit <at> debbugs.gnu.org; Wed, 22 Jun 2016 16:22:01 -0400 Received: from pb-sasl1.pobox.com ([64.147.108.66]:57568 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1bFoet-0005uM-GJ for 19459 <at> debbugs.gnu.org; Wed, 22 Jun 2016 16:22:00 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id CD1D222FBC; Wed, 22 Jun 2016 16:21:56 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=bpj4XO1ozgjVn45Zm/gVr3FQ0vg=; b=DDsg2a k8mIvhCZ2jOFCA355YnsAcOS6wF5PE+Ap4I03eW5yAtMcl8x85HWCSi4M8O82hHh dSClrwz5PxwbgcKDF6Aq+9f1mv372LU9gnx0qqXwFdyOHdwSlVonHJGAPbg21E+P IJJeQgG+Jk88/s5X6DW6f6YRDaJtgsdoP5ins= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=Kjw/XvNxm83Q1n8QJeeVPN5YlhTpzUUX znCJZLHPbW15Bf1anv0cwOzeo4kdGcbjvrtvKOyJ9jE1KCLRZ5CiuCWDC3nwRwKl S+NELacnlYwGM6IlaXztTFuvZlSKOXgVFVRf5L/q0Unc3bpMZ1u2FikFI+tGXwVB RogEPNjjMJI= Received: from pb-sasl1.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id C663B22FBB; Wed, 22 Jun 2016 16:21:56 -0400 (EDT) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl1.pobox.com (Postfix) with ESMTPSA id D3B2A22FBA; Wed, 22 Jun 2016 16:21:55 -0400 (EDT) From: Andy Wingo <wingo@HIDDEN> To: David Pirotte <david@HIDDEN> Subject: Re: bug#19459: #:export does not honor the merge-generics contract References: <20141228162024.048ca208@capac> Date: Wed, 22 Jun 2016 22:21:48 +0200 In-Reply-To: <20141228162024.048ca208@capac> (David Pirotte's message of "Sun, 28 Dec 2014 16:20:24 -0200") Message-ID: <87vb11q8ir.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: F714694A-38B6-11E6-B7B6-C1836462E9F6-02397024!pb-sasl1.pobox.com X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 19459 Cc: 19459 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.4 (-) Hi, On Sun 28 Dec 2014 19:20, David Pirotte <david@HIDDEN> writes: > (define-module (a) > #:use-module (oop goops) > #:export (<a> > !width > get-width > set-width)) Here you export four bindings: one class and three generics. Those three generics have methods on <a>. > (define-module (b) > #:use-module (oop goops) > #:use-module (a) Here you import the previous four bindings. > #:export (<b> > !width > get-width > set-width)) However here you declare that you are going to export four new bindings. I believe this is the source of your problem. You are expecting to extend the three generics and re-export them. However to do so you should #:re-export !width, get-width, and set-width. AFAIU there is no bug here. David WDYT? Andy
bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.Received: (at submit) by debbugs.gnu.org; 28 Dec 2014 18:21:05 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 28 13:21:04 2014 Received: from localhost ([127.0.0.1]:59937 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1Y5ISe-0004u2-Af for submit <at> debbugs.gnu.org; Sun, 28 Dec 2014 13:21:04 -0500 Received: from eggs.gnu.org ([208.118.235.92]:45314) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <david@HIDDEN>) id 1Y5ISc-0004tu-RB for submit <at> debbugs.gnu.org; Sun, 28 Dec 2014 13:21:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <david@HIDDEN>) id 1Y5ISb-0000VZ-Dx for submit <at> debbugs.gnu.org; Sun, 28 Dec 2014 13:21:02 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:46497) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <david@HIDDEN>) id 1Y5ISb-0000VT-BD for submit <at> debbugs.gnu.org; Sun, 28 Dec 2014 13:21:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47036) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <david@HIDDEN>) id 1Y5ISa-0002SL-0m for bug-guile@HIDDEN; Sun, 28 Dec 2014 13:21:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <david@HIDDEN>) id 1Y5ISW-0000Uy-O1 for bug-guile@HIDDEN; Sun, 28 Dec 2014 13:20:59 -0500 Received: from maximusconfessor.all2all.org ([79.99.200.102]:51465) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <david@HIDDEN>) id 1Y5ISW-0000SD-FJ for bug-guile@HIDDEN; Sun, 28 Dec 2014 13:20:56 -0500 Received: from localhost (unknown [192.168.0.2]) by maximusconfessor.all2all.org (Postfix) with ESMTP id 6160FA04C250 for <bug-guile@HIDDEN>; Sun, 28 Dec 2014 19:20:34 +0100 (CET) Received: from maximusconfessor.all2all.org ([192.168.0.1]) by localhost (maximusconfessor.all2all.org [192.168.0.2]) (amavisd-new, port 10024) with ESMTP id r7npxFw+X0U0 for <bug-guile@HIDDEN>; Sun, 28 Dec 2014 18:57:02 +0100 (CET) Received: from capac (unknown [179.210.40.164]) by maximusconfessor.all2all.org (Postfix) with ESMTPSA id E33B9A04C258 for <bug-guile@HIDDEN>; Sun, 28 Dec 2014 19:20:26 +0100 (CET) Date: Sun, 28 Dec 2014 16:20:24 -0200 From: David Pirotte <david@HIDDEN> To: <bug-guile@HIDDEN> Subject: #:export does not honor the merge-generics contract Message-ID: <20141228162024.048ca208@capac> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; boundary="Sig_/vOYtH6x_Yv+tT9Ug8btPg2Y"; protocol="application/pgp-signature" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -5.0 (-----) --Sig_/vOYtH6x_Yv+tT9Ug8btPg2Y Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello, debian testing GNU Guile 2.0.11 [ mine is .10-fa1a3-dirty, but it does not matter [ i'm stuck in that version until goops is patched [ and compiles guile-gnome again... #:export does not honor the merge-generics contract #:export should be adapted to honor the 'merge-generics user request and 'c= ontract'. What ever forces the 'system' to create a generic function, #:export in thi= s case, when 'merge-generics has been set, the system should or use the imported ge= neric and add the newly locally defined method, or create a new one [if that is neces= sary for its internal machinery] _but_ [immediately] merge it with th imported one, sinc= e it is the user request. Right now, even with the merge-generic setting, #:export calls module-ensure-local-variable! before anything else, creates a new get-with var, first unbound, later turned into a generic function with 1 applicable [locally defined] method only _but_ it does _not_not merge it, l= eading to "No applicable method..." bugs, as in the following example [simple and stupid,= but it only partially mimics real case situation, see the image.scm attachment of = this mail if you're interested http://www.mail-archive.com/guile-devel@HIDDEN/msg126= 18.html Happy hacking, David ;; module a starts here (define-module (a) #:use-module (oop goops) #:export (<a> !width get-width set-width)) (define-class <a> () (width #:accessor !width #:init-keyword #:width #:init-value 0)) (define-method (get-width (self <a>)) (!width self)) (define-method (set-width (self <a>) width) (set! (!width self) width)) ;; module a ends here ;; module b starts here (define-module (b) #:use-module (oop goops) #:use-module (a) #:export (<b> !width get-width set-width)) (define-class <b> () (width #:accessor !width #:init-keyword #:width #:init-value 0)) (define-method (initialize (self <b>) initargs) (next-method) =20 (let ((a (make <a>))) (set-width self (get-width a)) #;(add-child b a))) (define-method (get-width (self <b>)) (!width self)) (define-method (set-width (self <b>) width) (set! (!width self) width)) ;; module b ends here scheme@(guile-user)> ,use (oop goops) scheme@(guile-user)> (default-duplicate-binding-handler '(merge-generics re= place warn-override-core warn last)) scheme@(guile-user)> ,use (b) ;;; note: source file ./b.scm ;;; newer than compiled /home/david/.cache/guile/ccache/2.0-LE-8-2.0/= usr/alto/projects/guile-tests/goops/export/b.scm.go ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=3D0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling ./b.scm ;;; compiled /home/david/.cache/guile/ccache/2.0-LE-8-2.0/usr/alto/projects= /guile-tests/goops/export/b.scm.go scheme@(guile-user)> (make <b>) ERROR: In procedure scm-error: ERROR: No applicable method for #<<generic> get-width (1)> in call (get-wid= th #<<a> 2b70880>) Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(guile-user) [1]> ,bt In oop/goops.scm: 1553:4 3 (#<procedure 2854c80 at oop/goops.scm:1551:0 (class . initargs= )> #<<class> <b> 28cb8=E2=80=A6>) In guile-tests/goops/export/b.scm: 17:20 2 (#<procedure 2b708e0 at guile-tests/goops/export/b.scm:14:0 (s= elf initargs)> #<<=E2=80=A6> =E2=80=A6) In oop/goops/dispatch.scm: 239:9 1 (cache-miss #<<generic> get-width (1)> (#<<a> 2b70880>)) In unknown file: 0 (scm-error goops-error #f "No applicable method for ~S in call= ~S" (#<<generic> =E2=80=A6> =E2=80=A6) =E2=80=A6) scheme@(guile-user) [1]>=20 --Sig_/vOYtH6x_Yv+tT9Ug8btPg2Y Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBAgAGBQJUoEnoAAoJEPN0/ZOjBXrXoz8IAKPYsO45ScJDsl5IB+Aqeiwc 0LgKWEpDvFh9LKfkv3iqKmCU3W0OlbWByBYtRdhC/qrr4Y+7GebCV3ytLQUwjHo6 JqE3dMXvtDhVoFdj6tF3r0U4/zGdP3hpxjf+WhegURcqHtDgMAxpFqRp8CSHrGGc 4h5uNVDLq7BeEg9Vw6Lhr3kSmb3cFBp5SFrOXSQjke9EhguJ6ev86bHb1JzywNGv TQxeQTm8shtZSyH47vHbcchzLfth/r1ncXZUc+Feisw4qyR2mwSSrmFWZynZ1Exz oPR2CJ4z1i7vUdmtlYK2vPbFn7RyUmvuzLCyxkfhHgZfUb5aicOtLA7rlVwaCA0= =oppc -----END PGP SIGNATURE----- --Sig_/vOYtH6x_Yv+tT9Ug8btPg2Y--
David Pirotte <david@HIDDEN>
:bug-guile@HIDDEN
.
Full text available.bug-guile@HIDDEN
:bug#19459
; Package guile
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.