Я пытаюсь создать блок do интерактивно в ghci. Пока я не определяю переменную с блоком, это прекрасно:
Prelude>let a = do putStrLn "test"; putStrLn "other test"
Prelude>
но я не могу понять, как определить конструкцию let в блоке do в интерактивном режиме, не получив ошибку синтаксического анализа:
Prelude> let a = do let b = 5; putStrLn $ show b
<interactive>:2:40:
parse error (possibly incorrect indentation or mismatched brackets)
Очевидно,
let a = do
let b = 5
putStrLn $ show b
полностью прекрасен в исходном файле Haskell. Мне просто сложно понять, как перевести это на ghci.