GNU bug report logs -
#24080
fold-left description in (rnrs lists) section of guile manual incorrect
Previous Next
Full log
View this message in rfc822 format
[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)]
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)]
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.