A system programming language needs to match hardware where mutability is associated with memory addresses, something functional languages can afford to abstract away.