Haskell обычно ссылается как пример чисто функционального языка. Как это можно оправдать, учитывая существование System.IO.Unsafe.unsafePerformIO
?
Изменить: я думал, что с "чисто функциональным" подразумевалось, что невозможно ввести нечистый код в функциональную часть программы.