GNU bug report logs - #24080
fold-left description in (rnrs lists) section of guile manual incorrect

Previous Next

Package: guile;

Reported by: "Glenn Michaels" <gmichaels <at> Safe-mail.net>

Date: Tue, 26 Jul 2016 20:16:01 UTC

Severity: normal

Done: Andy Wingo <wingo <at> pobox.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: "Glenn Michaels" <gmichaels <at> Safe-mail.net>
Subject: bug#24080: closed (Re: bug#24080: fold-left description in (rnrs
 lists) section of guile manual incorrect)
Date: Thu, 04 Aug 2016 20:41:01 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#24080: fold-left description in (rnrs lists) section of guile manual incorrect

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 24080 <at> debbugs.gnu.org.

-- 
24080: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=24080
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Andy Wingo <wingo <at> pobox.com>
To: "Glenn Michaels" <gmichaels <at> Safe-mail.net>
Cc: 24080-done <at> debbugs.gnu.org
Subject: Re: bug#24080: fold-left description in (rnrs lists) section of guile
 manual incorrect
Date: Thu, 04 Aug 2016 22:40:25 +0200
On Tue 26 Jul 2016 22:15, "Glenn Michaels" <gmichaels <at> Safe-mail.net> writes:

> The section on the (rnrs lists) library in the guile manual contains the following:
>
> Scheme Procedure: fold-left combine nil list1 list2 …
> Scheme Procedure: fold-right combine nil list1 list2 …
>
>     These procedures are identical to the fold and fold-right procedures provided by SRFI-1.

I believe this was fixed by

  commit 498cd58cb43e0dde024ad3c62983def16a0c7ca9
  Author: Andy Wingo <wingo <at> pobox.com>
  Date:   Thu Jun 23 21:39:23 2016 +0200

      Fix R6RS fold-left documentation
      
      * doc/ref/r6rs.texi (rnrs lists): Fix documentation of fold-left.

Should be out in 2.1.4.

Cheers,

Andy

[Message part 3 (message/rfc822, inline)]
From: "Glenn Michaels" <gmichaels <at> Safe-mail.net>
To: bug-guile <at> gnu.org
Subject: fold-left description in (rnrs lists) section of guile manual
 incorrect
Date: Tue, 26 Jul 2016 16:15:06 -0400
The section on the (rnrs lists) library in the guile manual contains the following:

Scheme Procedure: fold-left combine nil list1 list2 …
Scheme Procedure: fold-right combine nil list1 list2 …

    These procedures are identical to the fold and fold-right procedures provided by SRFI-1.

In the case of fold-left and SRFI-1 fold, this is not correct; the order in which the arguments are passed to the combine procedure is different. Compare:

(let ((f (lambda (a b) (format #f "(f ~a ~a)" a b))))
  (for-each
   (lambda (fold)
     (display (fold f "0" '(a b c d e)))
     (format #t " ; ~s\n" (procedure-name fold)) )
   (list (@ (rnrs lists) fold-left)
         (@ (rnrs lists) fold-right)    ;same as srfi-1 fold-right
         (@ (srfi srfi-1) fold)
         (@ (srfi srfi-1) fold-right))))

Output:

(f (f (f (f (f 0 a) b) c) d) e) ; fold-left
(f a (f b (f c (f d (f e 0))))) ; fold-right
(f e (f d (f c (f b (f a 0))))) ; fold
(f a (f b (f c (f d (f e 0))))) ; fold-right

In the single-list case, fold-left can be thought of as applying f left-associatively to the elements of the list.
Moreover, in this case (fold f nil l) == (fold-left (lambda (x y) (f y x)) nil l).

(In the case of fold-right, both versions are identical).



This bug report was last modified 9 years and 6 days ago.

Previous Next


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