Tôi đã rối tung với một số chức năng của Haskell, một số tôi đã hiểu và một số thì không.Scanr hoạt động như thế nào? Haskell
Ví dụ, nếu chúng ta làm: scanl (+) 0 [1..3]
hiểu biết của tôi là như sau:
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
Bây giờ khi chúng ta thực hiện danh sách chúng tôi nhận [0, 1, 3, 6]
.
Nhưng tôi dường như không hiểu làm cách nào scanr (+) 0 [1..3]
cho tôi: [6,5,3,0]
Có thể scanr
hoạt động theo cách sau?
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...
Tôi không biết đó có phải là mẫu hay không.