scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]Note that
last (scanl f z xs) == foldl f z xs
>>> scanl (+) 0 [1..4] [0,1,3,6,10] >>> scanl (+) 42 [] [42] >>> scanl (-) 100 [1..4] [100,99,97,94,90] >>> scanl (\reversedString nextChar -> nextChar : reversedString) "foo" ['a', 'b', 'c', 'd'] ["foo","afoo","bafoo","cbafoo","dcbafoo"] >>> scanl (+) 0 [1..] * Hangs forever *
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
>>> scanl1 (+) [1..4] [1,3,6,10] >>> scanl1 (+) [] [] >>> scanl1 (-) [1..4] [1,-1,-4,-8] >>> scanl1 (&&) [True, False, True, True] [True,False,False,False] >>> scanl1 (||) [False, False, True, True] [False,False,True,True] >>> scanl1 (+) [1..] * Hangs forever *