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

Apr 15, 2012 15:57

Устно вычислите значения побочные эффекты выражений и проверьте результат в 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"
(Значения тоже можете вычислить в качестве бонуса:)

fprog, haskell, сборник задач и упражнений по Хаскелю, fp

Leave a comment

Comments 4

bravit April 15 2012, 12:00:23 UTC
С seq ошибся…

Reply

deni_ok April 15 2012, 12:22:24 UTC
Ради этого всё затевалось :)

Reply

ext_714455 April 15 2012, 12:28:59 UTC
Аналогично, только я что-то не до конца понимаю почему вычисление 'print "first"' до HNF не дало сайд-эффекта?

Reply

nponeccop April 15 2012, 13:14:47 UTC
Грубо говоря, потому что сайд-эффекты производит runIO в рантайм-библиотеке, а вычисление "print first" лишь вычисляет, какой эффект надо произвести. Всё, что не попадает в runIO, не производит эффектов, независимо от того, вычисляется или нет.

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

Reply


Leave a comment

Up