scanr f z [..., x{n-1}, xn] == [..., x{n-1} `f` (xn `f` z), xn `f` z, z]
head (scanr f z xs) == foldr f z xs last (scanr f z xs) == z