functions do not mutate lists