The standard prelude in Haskell does not define anything called "fold". It defines fold{l,r}{,1} which can be applied to any Foldable data (see Data.Foldable). For technical reasons having to do with Haskell's non-strict evaluation, foldl' and foldr' also exist. But NOT "fold".
https://hackage.haskell.org/package/base-4.18.0.0/docs/Data-Foldable.html#laws On Thu, 13 Apr 2023 at 21:17, Sebastian Jordan Montano < sebastian.jor...@inria.fr> wrote: > Hello Steffen, > > Let's take Kotlin documentation ( > https://kotlinlang.org/docs/collection-aggregate.html#fold-and-reduce) > > > The difference between the two functions is that fold() takes an initial > value and uses it as the accumulated value on the first step, whereas the > first step of reduce() uses the first and the second elements as operation > arguments on the first step. > > Naming is not so consistent in all the programming languages, they mix up > the names "reduce" and "fold". For example in Haskell "fold" does not take > an initial value, so it is like a "reduce" in Kotlin. In Kotlin, Java, > Scala and other oo languages "reduce" does not take an initial value while > "fold" does. Pharo align with those languages (except that out fold is > called #inject:into:) > > So for me the Pharo methods #reduce: and #inject:into represent well what > they are doing and they are well named. > > Cheers, > Sebastian > > ----- Mail original ----- > > De: "Steffen Märcker" <merk...@web.de> > > À: "Any question about pharo is welcome" <pharo-users@lists.pharo.org> > > Envoyé: Mercredi 12 Avril 2023 19:03:01 > > Objet: [Pharo-users] Collection>>reduce naming > > > Hi! > > > > I wonder whether there was a specific reason to name this method > #reduce:? > > I would have expected #fold: as this is the more common term for what it > > does. And in fact, even the comment reads "Fold the result of the > receiver > > into aBlock." Whereas #reduce: is the common term for what we call with > > #inject:into: . > > > > I am asking not to annoy anyone but out of curiosity. It figured this out > > only by some weird behaviour after porting some code that (re)defines > > #reduce . > > > > Ciao! > > Steffen >