2016-09-15 5 views
0

Edit: Хорошо, я знаю, что нет ничего плохого в этом, но я не знаю, почему она не дает OUTPUTПочему это выражение GHCi не имеет выхода?

let y = 2 * x where x = sum[1..3] 

Я только интересно, потому что это другое выражение не дают OUTPUT

let x = sum[1..3] in 2 * x 
+0

Nope. Я отредактировал свой вопрос, чтобы отразить то, что я пытался задать более подробно. У меня есть один пусть это дает выход 12, но другой пусть не дает никакого вывода – TurboCrackers

+3

Ах. Поэтому 'let ... in ...' является выражением. Однако 'let ...' также может возникать в блоке 'do'. Я рекомендую вам подумать о поведении GHCi следующим образом: если вы вводите что-то, что только выглядит как сырое выражение, оно оценивает его и печатает результат. С другой стороны, если то, что вы ввели, похоже, может принадлежать блоку 'IO'' do', оно просто выполнит это действие. – Alec

+0

О, спасибо! Это тонна смысла! – TurboCrackers

ответ

2

Ah. Так что пусть ... в ... это выражение. Однако пусть ... также может произойти в блоке do. Я рекомендую вам подумать о поведении GHCi следующим образом: если вы вводите что-то, что только выглядит как сырое выражение, оно оценивает его и печатает результат. С другой стороны, если то, что вы ввели, похоже, может принадлежать блоку ввода-вывода, оно просто выполнит это действие. - @Alec