Читаю сейчас книгу по параллельному программированию на Haskell. И там я вижу такой пример:
Prelude> let x = 2 + 3
Prelude> :sp x
x = _
Prelude> x
5
Prelude> :sp x
x = 5
Но вместо этого в моем GHCi 7.8.3 от платформы Haskell 2014.02 я получил такое поведение:
Prelude> let x = 2 + 3
Prelude> :sp x
x = _
Prelude> x
5
Prelude> :sp x
x = _
Смотрите последнюю строку. Почему x не оценивается? Я попытался использовать «seq x ()», и он тоже не оценивается.