deniok: (Default)
deniok ([personal profile] deniok) wrote2012-04-15 03:57 pm

Знай и люби монаду IO

Устно вычислите значения побочные эффекты выражений и проверьте результат в GHCi:
let x = print "first" in print "second"

let x = print "first" in x >> print "second"

(\x -> print "first") (print "second")

print "first" `seq` print "second"
(Значения тоже можете вычислить в качестве бонуса:)

[identity profile] nponeccop.livejournal.com 2012-04-15 01:14 pm (UTC)(link)
Грубо говоря, потому что сайд-эффекты производит runIO в рантайм-библиотеке, а вычисление "print first" лишь вычисляет, какой эффект надо произвести. Всё, что не попадает в runIO, не производит эффектов, независимо от того, вычисляется или нет.

Для полноты картины нужны ещё примеры с unsafePerformIO