Subject: bug#21378: closed (Re: R6RS guard's else chokes on multiple expressions)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 30 Aug 2015 11:53:02 +0000

Your bug report

#21378: R6RS guard's else chokes on multiple expressions

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
21378: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=21378
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: R6RS guard's else chokes on multiple expressions
From: [email-masked] (Taylan Ulrich Bayırlı/Kammer)
To: [email-masked]
Date: Sun, 30 Aug 2015 13:52:39 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Please ignore this bug report, since it was my fault.  I had a foreign
(rnrs exceptions) library in my load-path that took precedence.

Sorry about the noise.

Taylan

Subject: R6RS guard's else chokes on multiple expressions
From: [email-masked] (Taylan Ulrich Bayırlı/Kammer)
To: [email-masked]
Date: Sat, 29 Aug 2015 23:52:04 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

It seems that whatever macro tries to match the guard expression's
else-clause, fails to do so when the clause contains more than one
expression, and so adds a default "else re-raise" clause after the
existing else clause.

I couldn't figure out where this happens.  I grepped the whole
source tree for 're-raise' and only found it twice in a comment.

Transcript showcasing bug:

taylan@T420:~$ guile
GNU Guile 2.0.11
Copyright (C) 1995-2014 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> ,use (rnrs exceptions)
scheme@(guile-user)> (guard (exc (else #f #f)) #f)
While compiling expression:
ERROR: Syntax error:
unknown file:3:12: cond: else must be the last clause in subform (else #f #f) of (cond (else #f #f) (else (re-raise)))
scheme@(guile-user)>

Taylan