В производных ML (таких как OCaml, SML, F #) есть «ссылки», которые можно использовать в качестве изменяемых переменных.
В Хаскеле это не совсем корректно. Состояние просто не покрыто обычным «чисто функциональным» стилем. Чистые языки FP имеют дело с «вечными истинами» и поэтому не очень подходят для работы с «эфемерными истинами» (хотя это можно сделать, безусловно).
Однако, да, иногда нам нужно изменяемое состояние. Такой язык, как ATS , включает линейные типы для обработки разрушительных обновлений и безопасной манипуляции ресурсами.