Ответ 1
Я думаю, что этот комментарий bheklilr должен быть отмечен как ответ:
Каков тип x? Если он
(Num a, Enum a) => [a]
, тогда это не будет работать так, как ожидалось. Попробуйтеlet x = [1..100] :: [Int
]. В действительности, когда вы печатаете x с более общим типом, GHCi специализируется на Integer для печати. Это означает, что значения, которые вы видите напечатанные, на самом деле не сохраняются в x thunk. Использование конкретного типа позволяет избежать этой проблемы.
С дополнительной заметкой Дэвида Янга, что эта проблема не будет возникать в версиях GHCi раньше 7,8, когда ограничение мономорфизма было разрешено.