Am Do., 22. Sept. 2022 um 23:14 Uhr schrieb Lucier, Bradley J <xxxxxx@purdue.edu>:

[...]

> In SRFI 231, as in Haskell and Ocaml, as I understand it, foldl calls
> kons with the list element as the right argument, and foldr calls kons
> with the list element as the left argument.
>
> R6RS has `fold-left` and `fold-right` with the same conventions as you have.  No need to cite a different language (with quite different evaluation semantics in the case of Haskell).
>
> SRFI 1's `fold` is R6RS's `fold-right` with the exchanged order when calling the combiner.
>
> Any comment about this? (Or did I miss one?)
>
> In view of established names in the Scheme world, `fold-left` and `fold-right` seem to be better choices than `foldl` and `foldr`.  (And everyone who knows `fold-left` and `fold-right` can automatically guess how the argument order is in SRFI 231.)

I made no comment.

As far as I can see, SRFI 1’s “fold” is R6RS’s fold-left with the knil as the rightmost argument of the combiner, not the leftmost.

I don’t attach too much importance to this small mistake, except that I find the plethora of competing fold/fold-left/fold-right in the Scheme world quite confusing, and I don’t want to propagate that confusion with this SRFI.

As far as R6RS, SRFI 1, and naming conventions established by other functional languages are concerned, everything is fine, I think.

R6RS defines `fold-left` and `fold-right` in the style of `foldl` and `foldr` of other functional programming languages (but with a more verbose name as typical for Scheme).

SRFI 1 offers `fold` as an alternative to `fold-left` with the arguments exchanged for the combiner.  

[...]

Because R6RS seems to have the same semantics for fold-left and fold-right as this SRFI, and because array-fold-right in SRFI 179 has the same definition as array-fold-right in SRFI 231 with one array argument, I may make the changes you suggest, I’ll have to think about it.

Thanks,

Marc