From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Mark H Weaver Newsgroups: gmane.lisp.guile.bugs Subject: bug#17296: Uh, wrong? Date: Wed, 04 Jun 2014 10:49:04 -0400 Message-ID: <87sinku3vj.fsf@yeeloong.lan> References: <878ur25thj.fsf@yeeloong.lan> <87wqcx99zk.fsf@fencepost.gnu.org> <87a99tv0wh.fsf@yeeloong.lan> <87bnu98ezt.fsf@fencepost.gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1401893425 7871 80.91.229.3 (4 Jun 2014 14:50:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 4 Jun 2014 14:50:25 +0000 (UTC) Cc: 17296@debbugs.gnu.org To: David Kastrup Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Wed Jun 04 16:50:18 2014 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WsCWA-0001xz-4u for guile-bugs@m.gmane.org; Wed, 04 Jun 2014 16:50:18 +0200 Original-Received: from localhost ([::1]:34482 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WsCW9-00080U-KP for guile-bugs@m.gmane.org; Wed, 04 Jun 2014 10:50:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41606) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WsCW1-0007yT-57 for bug-guile@gnu.org; Wed, 04 Jun 2014 10:50:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WsCVu-0004kh-Um for bug-guile@gnu.org; Wed, 04 Jun 2014 10:50:09 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:45171) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WsCVu-0004kV-Q1 for bug-guile@gnu.org; Wed, 04 Jun 2014 10:50:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1WsCVu-0006EV-EQ for bug-guile@gnu.org; Wed, 04 Jun 2014 10:50:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Mark H Weaver Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Wed, 04 Jun 2014 14:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17296 X-GNU-PR-Package: guile X-GNU-PR-Keywords: patch Original-Received: via spool by 17296-submit@debbugs.gnu.org id=B17296.140189337923908 (code B ref 17296); Wed, 04 Jun 2014 14:50:02 +0000 Original-Received: (at 17296) by debbugs.gnu.org; 4 Jun 2014 14:49:39 +0000 Original-Received: from localhost ([127.0.0.1]:44047 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WsCVT-0006DN-5C for submit@debbugs.gnu.org; Wed, 04 Jun 2014 10:49:38 -0400 Original-Received: from world.peace.net ([96.39.62.75]:45311 ident=hope9) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WsCVN-0006D4-Il for 17296@debbugs.gnu.org; Wed, 04 Jun 2014 10:49:33 -0400 Original-Received: from 209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com ([209.6.91.212] helo=yeeloong.lan) by world.peace.net with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1WsCVF-0002Mu-R5; Wed, 04 Jun 2014 10:49:21 -0400 In-Reply-To: <87bnu98ezt.fsf@fencepost.gnu.org> (David Kastrup's message of "Wed, 04 Jun 2014 06:39:50 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.bugs:7495 Archived-At: David Kastrup writes: > Mark H Weaver writes: > >> David Kastrup writes: >>> So the behavior for length+ on a dotted list is strictly unspecified. >>> It is not even stated "it is an error". >> >> Actually, it is. At the end of the section that defines the "types" >> such a "clist" and "flist", it states: >> >> It is an error to pass a circular or dotted list to a procedure not >> defined to accept such an argument. >> >> While it is true that we are not required to signal an error, I'm wary >> extending 'length+' in this way. It also effectively extends 'map' and >> 'for-each' to support things like (map + '() 'foo), and thus potentially >> affects many other procedures both inside and outside of Guile that use >> 'map' and 'for-each'. Once we've done this, users are likely to grow >> dependent on it and we can never go back. > > That is true for _any_ particular choice for unspecified behavior. > _Including_ throwing an error as a means of checking input validity. > > You are proposing providing functions _not_ defined in srfi-1 at all for > functionality that is clearly desirable even for implementing behavior > required by some functions in srfi-1. If we want things like (map + - * /) to signal an error, then we need a 'length+' that signals an error when passed - or * or /. In fact, that's precisely what motivated me to make 'length+' more strict. So, you and I are coming at this from different angles. I want a strict 'length+' to implement 'map' and 'for-each', and you want a lax one to implement 'drop-right' et al. It seems to me that we need both. The fact that the SRFI-1 reference implementation of 'length+' is lax very nearly swayed me over to your position, but there's a problem: Guile's 'length+' has (always?) returned #f for dotted lists. It would be dangerous to silently change the behavior of this case from one non-error to another non-error. Programs could start silently misbehaving without any clue that anything went wrong. Mark