The two examples you provide, the first is left-to-right on *both* input 
and output. The other (Elm's) is not. Right fold is right-to-left on *both* 
input 
and output. The lack of symmetry between the two operations only reinforces 
the issue.

On Thursday, December 15, 2016 at 1:51:26 PM UTC-6, Janis Voigtländer wrote:
>
> I would like to point out that: I’m sure neither of us is too stupid to 
> know what the other means. :-)
>
> And I don’t think there is no basis to discuss these aspects. In fact, 
> here is a possible explanation of why this all seems so fuzzy: One could 
> distinguish between “from left to right in terms of the input” and “from 
> left to right in the output”. Then:
>
>    - ((0 - 1) - 2) - 3 processes elements from left to right in terms of 
>    the input and happens to produce an expression that is nested from left to 
>    right in the output 
>    - 3 - (2 - (1 - 0)) processes elements from left to right in terms of 
>    the input and happens to produce an expression that is nested from right 
> to 
>    left in the output 
>
> The distinction you make between “head to tail” and “left to right” (as if 
> you would be fine with the current Elm behavior of foldl aka 
> foldLeftToRight if it were simply called foldHeadToTail instead) is not 
> one I can relate to.
> ​
>
> 2016-12-15 20:31 GMT+01:00 Kasey Speakman <[email protected] 
> <javascript:>>:
>
>> foldl doesn't say it folds head to tail (which would be accurate). It 
>> says it folds from the left ("to the right" is understood... where else are 
>> you going to go from the left?).
>>
>> I'm not going to quibble over what "left" is, nor what processing 
>> something from the left to right means. If that's not understood between 
>> us, then we don't have enough basis to discuss that aspect.
>>
>> But I would like to point out that: the fact that it is a source of 
>> confusion only brings to the surface the imprecision of its name.
>>
>> On Thursday, December 15, 2016 at 1:05:14 PM UTC-6, Janis Voigtländer 
>> wrote:
>>>
>>> And I do get the mathematically wrong answer on foldl when using 
>>>> mathematically non-associative operations (like subtraction). That's 
>>>> provided we agree on the definition of which side of the list is the 
>>>> "left" 
>>>> side.
>>>
>>> Well, still not quite for me. I’m sure we both agree what the “left” 
>>> side of the list is. And still I don’t think there is an argument to make 
>>> that hence Elm’ foldl‘s answer is mathematically wrong. The fact that 
>>> we agree what the left side of the list is does not mean that foldl (-) 
>>> 0 [1,2,3] needs to evaluate to ((0 - 1) - 2) -3. It can evaluate to 3 - 
>>> (2 - (1 - 0)) without us disagreeing what is “left”. In other words, 
>>> “leftiness” is not at issue here. Both ((0 - 1) - 2) -3 and 3 - (2 - (1 
>>> - 0)) do work “from the left”. They combine elements in the order in 
>>> which they appear in the list *from left to right*. One could argue 
>>> that the real thing at issue here is not what “left” means, but what 
>>> “folding” means. You take it to mean to literally replace :: by (-) and 
>>> you are only willing to argue about how the result is bracketed. But one 
>>> can take “folding” to simply mean that stuff gets accumulated via an 
>>> operator, and “left folding” then means that more-left-sitting elements get 
>>> accumulated earlier. And Elm’s foldl is perfectly mathematically 
>>> correct according to this meaning.
>>>
>>> Of course, that’s back to a point I made already the other day. There’s 
>>> nothing “mathematically wrong” about Elm’s foldl unless one postulates 
>>> “mathematically correct” to mean “ foldl needs to be the specific 
>>> operation it is in Haskell etc.” But that’s not a mathematical argument.
>>> ​
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Elm Discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to