From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Mark H Weaver Newsgroups: gmane.lisp.guile.user Subject: Re: A value for "nothing" Date: Tue, 28 Aug 2018 11:38:41 -0400 Message-ID: <87h8jeijr2.fsf@netris.org> References: <21036238.c6yQEfjfIL@aleksandar-ixtreme-m5740> <87sh30vqmm.fsf@netris.org> <20180827080415.GB10407@tuxteam.de> <87wosbsh5m.fsf@netris.org> <87sh2zsfle.fsf@netris.org> <31c7a870-aaf2-3f0e-2ef4-be4dc783a842@gmail.com> <87va7vyo2q.fsf@netris.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1535470733 10727 195.159.176.226 (28 Aug 2018 15:38:53 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 28 Aug 2018 15:38:53 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Cc: guile-user@gnu.org, Matt Wette To: John Cowan Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Tue Aug 28 17:38:48 2018 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fug4r-0002cU-96 for guile-user@m.gmane.org; Tue, 28 Aug 2018 17:38:45 +0200 Original-Received: from localhost ([::1]:38762 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fug6x-00052U-Gv for guile-user@m.gmane.org; Tue, 28 Aug 2018 11:40:55 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fug6O-00051U-Tw for guile-user@gnu.org; Tue, 28 Aug 2018 11:40:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fug6K-0003gY-Uu for guile-user@gnu.org; Tue, 28 Aug 2018 11:40:20 -0400 Original-Received: from world.peace.net ([64.112.178.59]:52188) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fug6K-0003g9-QX for guile-user@gnu.org; Tue, 28 Aug 2018 11:40:16 -0400 Original-Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fug6J-000410-Pl; Tue, 28 Aug 2018 11:40:15 -0400 In-Reply-To: (John Cowan's message of "Tue, 28 Aug 2018 11:19:06 -0400") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 64.112.178.59 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:14804 Archived-At: John Cowan writes: > On Tue, Aug 28, 2018 at 3:01 AM Mark H Weaver wrote: > > In RnRS, (define a (if #f #f)) is allowed and guaranteed to assign > *some* object to 'a' without signalling an error. > > Actually, the phrase used is "the result is unspecified", which unfortunately > is not defined in any RnRS. That's the phrase used in R7RS-small, which fails to define it, as you noted, but that shortcoming is limited to R7RS. In R6RS, section 11.4.3 (Conditionals) provides this example: (if #f #f) ===> unspecified whose meaning is defined in section 6.6 (Evaluation examples), which states: Moreover, the "===>" symbol is also used to explicitly say that the value of an expression is unspecified. For example: (eqv? "" "") ===> unspecified I take the use of the singular form of "value" here to imply that it returns only one value. R5RS is even more clear. It states "If yields a false value and no is specified, then the result of the expression is unspecified." Section 1.3.2 of R5RS makes it crystal clear what that means: If the value of an expression is said to be "unspecified," then the expression must evaluate to some object without signalling an error, but the value depends on the implementation; this report explicitly does not say what value should be returned. > Racket produces a syntax error in this situation at least in its > default language. Racket has diverged from Scheme quite a bit, to the point that they don't even call the language "Scheme" anymore, but rather "Racket". Mark