ghci でインタラクティブに do ブロックを作成しようとしています。in ブロックで変数を定義しない限り、問題ありません。
Prelude>let a = do putStrLn "test"; putStrLn "other test"
Prelude>
しかし、解析エラーを発生させずに do ブロックでインタラクティブに let 構造を定義する方法がわかりません。
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に変換する方法がわかりません。