x <- ...
let y = ...
z = ...
in ...
parse error on input ‘in’
а так нормально
fun = do
x <- ...
let y = ...
z = ...
in ...
Без do блока оба варианта валидны.
in не делай
Почему? Ведь тогда нужно 2 let?
do let x = 1 y = 2 x + y
те in только без do нотации, если строк больше 1?
in только без ду-нотации, но даже когда биндинг один
1 не работает, потому что let блок в ду нотации закрывается без in, а после закрытия ты пишешь in, компилятор этого не ожидает
потому что do-let и let-in — разные синтаксические конструкции. let в do-блоке — это стэйтмент, вводящий обозначения в следующие стэйтменты let-in — это выражение, вводящее обозначения только внутри себя. это выражение может быть стэйтментом, но его обозначения не будут видны ниже, а только внутри этого выражения in не может быть стэйтментом, поэтому парсер ругается
Обсуждают сегодня