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.