По любому формальному определению, это чистая функция
Даже сумма числе не может быть чистой функцией:
add :: Int -> Int -> Int
add x y = x + y
В результате:
.Lcl7:
cmpq $0,_module_registered
jne .Lcl8
.Lcl9:
movq $1,_module_registered
addq $-8,%rbp
movq $__stginit_base_Prelude_,(%rbp)
.Lcl8:
addq $8,%rbp
jmp *-8(%rbp)
,как видите, значение регистров пишется в стек, а перед возвратом восстанавливает содержимое из стека, что уж говорить про IO, для которого нужен буффер и файловый дескриптор
Danil
Doge
Igor
Диёр
Крылатый
Ilya
Dr. Friedrich
Vladislav
Romɑn
Vasily
Nikolay
Ayrat
Vasiliy
x