Насколько я понимаю, хаскелисты очень дорожат иммутабельностью. Я не знаю как реализованы замыкания в хаскеле, но на примере scheme, я покажу, как безо всякого оператора присваивания можно, причем очень легко, ввести императивщину в язык.
Вот пример чистой функции:
(define a 1)
(define tst (let((a 1)) (lambda(x) (+ a x))))
(write (tst 1)) ; --> 2
(define a 10)
(write (tst 1)) ; --> 2
(define a 1)
(define tst (let((a (lambda() a))) (lambda(x) (+ (a) x))))
(write (tst 1)) ; --> 2
(define a 10)
(write (tst 1)) ; --> 11
Собственно вопрос: В хаскеле тоже так возможно?