List monad provides a consable view into an array
sometimes it ignores mutability, so don't mutate the array you hand to it