GNU logs - #49707, boring messages


Message sent to bug-guile@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#49707: Documentation and behavior differ for match (not ...) pattern
Resent-From: "Jakub Wojciech" <jakub-w@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guile@HIDDEN
Resent-Date: Fri, 23 Jul 2021 09:47:02 +0000
Resent-Message-ID: <handler.49707.B.162703360328818 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 49707
X-GNU-PR-Package: guile
X-GNU-PR-Keywords: 
To: 49707 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-guile@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.162703360328818
          (code B ref -1); Fri, 23 Jul 2021 09:47:02 +0000
Received: (at submit) by debbugs.gnu.org; 23 Jul 2021 09:46:43 +0000
Received: from localhost ([127.0.0.1]:42334 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1m6rlT-0007Uk-4X
	for submit <at> debbugs.gnu.org; Fri, 23 Jul 2021 05:46:43 -0400
Received: from lists.gnu.org ([209.51.188.17]:35712)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jakub-w@HIDDEN>) id 1m6rlN-0007UY-Qr
 for submit <at> debbugs.gnu.org; Fri, 23 Jul 2021 05:46:41 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:51910)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <jakub-w@HIDDEN>)
 id 1m6rlN-00024P-DM
 for bug-guile@HIDDEN; Fri, 23 Jul 2021 05:46:37 -0400
Received: from mx1.riseup.net ([198.252.153.129]:57528)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <jakub-w@HIDDEN>)
 id 1m6rlL-0007b4-3X
 for bug-guile@HIDDEN; Fri, 23 Jul 2021 05:46:37 -0400
Received: from fews2.riseup.net (fews2-pn.riseup.net [10.0.1.84])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (Client CN "*.riseup.net",
 Issuer "Sectigo RSA Domain Validation Secure Server CA" (not verified))
 by mx1.riseup.net (Postfix) with ESMTPS id 4GWPbW57g4zDyTg
 for <bug-guile@HIDDEN>; Fri, 23 Jul 2021 02:46:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak;
 t=1627033591; bh=siNbkzL78oUh0XyQUJ+jLnL3KHCyFe32N+BdtdrlNZM=;
 h=From:To:Subject:Date:From;
 b=RTIV+ntqJvbDzq9EPKbaIvdQqQIoAglD46fDwLJPFyz/fLYLLBb0DoecQgHbgqDTE
 VDo6G0VLDnLoRr0kQShpbD2B6elIexE+0tylfUuvNTHsFbfYPL5gq/o24PipNtmUc3
 WIAvEn49yd+KltttYfxLsN2K0ZQkjLVf74Y33kKE=
X-Riseup-User-ID: 04D4D64113D15ABB28AC339E10B929A56D0742AF3F585FF0C49F3CF9B34F6BF0
Received: from [127.0.0.1] (localhost [127.0.0.1])
 by fews2.riseup.net (Postfix) with ESMTPSA id 4GWPbV6tlfz1ySf
 for <bug-guile@HIDDEN>; Fri, 23 Jul 2021 02:46:30 -0700 (PDT)
From: "Jakub Wojciech" <jakub-w@HIDDEN>
Date: Fri, 23 Jul 2021 11:45:34 +0200
Message-ID: <87fsw5e535.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Received-SPF: pass client-ip=198.252.153.129; envelope-from=jakub-w@HIDDEN;
 helo=mx1.riseup.net
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,
 SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.4 (-)
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: -2.4 (--)

--=-=-=
Content-Type: text/plain

The documentation states:
> (not pat_1 ... pat_n)           if all pat_1 thru pat_n don't match

The code only implements (not pat), for a singular pattern, e.g:
  (match 2
    ((not 1) 'not-one)
    (1 'one)
    (2 'two))
  => not-one

According to the documentation this should work, but the result is erroneous:
  (match 3
    ((not 1 2) 'not-one-nor-two)
    (1 'one)
    (2 'two)
    (3 'three))
  => three

So it fails silently.

RhodiumToad on #guile proposed the simple fix that I took a liberty of
attaching to this message.
It adds a clause for (not ...), delegating it to 'or': (not (or ...)).

However RhodiumToad also raised another issue: is the code wrong or is
the documentation wrong?

The documentation in the file itself states:
> The 'not' operator succeeds if the given pattern doesn't match.
The test from upstream also only checks for the singular pattern inside
the 'not' clause.
This means that the idea behind this code is to allow one and only one
pattern.

Although I lean towards fixing the code to match the Guile's
documentation (i.e. applying the attached patch), I also wonder about
the relation with the upstream - Chibi Scheme.
There are three possibilities:
1. Diverge from their implementation.
2. Try to convince them to apply that patch too.
3. Make passing more than one pattern to 'not' clause a syntax error and
   changing the info manual documentation.

The question is: which one do we want to choose?

The rationale for not selecting option 3 is the fact that the change is
non-breaking, adds a functionality, and conforms to both SRFI-200 and
SRFI-204 drafts and the original Wright-Duba paper.


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=match-patch.diff

diff --git a/module/ice-9/match.upstream.scm b/module/ice-9/match.upstream.scm
index b1fc371b8..f12981cb3 100644
--- a/module/ice-9/match.upstream.scm
+++ b/module/ice-9/match.upstream.scm
@@ -115,7 +115,7 @@
 ;;> @example{(match 1 ((or x) x))}
 ;;> @example{(match 1 ((or x 2) x))}
 
-;;> The @scheme{not} operator succeeds if the given pattern doesn't
+;;> The @scheme{not} operator succeeds if none of the given patterns
 ;;> match.  None of the identifiers used are available in the body.
 
 ;;> @example{(match 1 ((not 2) #t))}
@@ -355,6 +355,8 @@
      (match-extract-vars (or p ...) (match-gen-or v (p ...) g+s sk fk i) i ()))
     ((match-two v (not p) g+s (sk ...) fk i)
      (match-one v p g+s (match-drop-ids fk) (sk ... i) i))
+    ((match-two v (not p ...) g+s (sk ...) fk i)
+     (match-two v (not (or p ...)) g+s (sk ...) fk i))
     ((match-two v (get! getter) (g s) (sk ...) fk i)
      (let ((getter (lambda () g))) (sk ... i)))
     ((match-two v (set! setter) (g (s ...)) (sk ...) fk i)

--=-=-=--




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: "Jakub Wojciech" <jakub-w@HIDDEN>
Subject: bug#49707: Acknowledgement (Documentation and behavior differ for
 match (not ...) pattern)
Message-ID: <handler.49707.B.162703360328818.ack <at> debbugs.gnu.org>
References: <87fsw5e535.fsf@HIDDEN>
X-Gnu-PR-Message: ack 49707
X-Gnu-PR-Package: guile
Reply-To: 49707 <at> debbugs.gnu.org
Date: Fri, 23 Jul 2021 09:47:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-guile@HIDDEN

If you wish to submit further information on this problem, please
send it to 49707 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
49707: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D49707
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems



Last modified: Fri, 23 Jul 2021 10:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.