私はいくつかの Haskell 関数をいじっていますが、理解できるものもあれば、理解できないものもあります。
たとえば、そうする場合:scanl (+) 0 [1..3]
私の理解は次のとおりです。
1. the accumulator is 0 acc = 0 |
2. (+) applied to acc and first el acc = 0 + 1 = 1 |
3. (+) applied to latest acc and snd el acc = 1 + 2 = 3 |
4. (+) applied to latest acc and third acc = 3 + 3 = 6 V
リストを作成すると、 が得られ[0, 1, 3, 6]
ます。
しかし、私はどのように私に与えるのか理解できないようscanr (+) 0 [1..3]
です:[6,5,3,0]
多分scanr
次のように動作しますか?
1. the first element in the list is the sum of all other + acc
2. the second element is the sum from right to left (<-) of the last 2 elements
3. the third element is the sum of first 2...
それがパターンかどうかはわかりません。