何かを見逃しているに違いありませんが、この不自然な例が機能しない理由がわかりません。
test1 :: Int
test1 = let g = \s -> s + s
f = \u -> let h = \t -> t + t
h' = \v -> v + v
in g (h (h' u))
in f 1
ghci > 入力 `h'' の解析エラー
ただし、次の同等の部分は問題ありません。
test2 :: Int
test2 = let g = \s -> s + s
f = \u -> let h = \t -> t + t; h' = \v -> v + v
in g (h (h' u))
in f 1
これは私の構文の問題だと思いますが、test1 には何も問題はありません。ありがとう。
編集:問題を見つける正しい方法を指摘してくれてありがとう。vim-haskellConceal プラグインに関係していることが判明しました。別のエディターでコードをコピーして貼り付けて保存し、vim に戻ると、ネストされた let-in ブロックに別のインデントがあることに気付きます。そのプラグインを削除した後は、すべて問題ありません。
編集: このプラグインのコードを簡単に読んでも不適切なものは何も見つからなかったので、このプラグインのせいにするのはやめましょう。おそらく、vim7.3 の「隠蔽」機能が根本的な原因です。でも、暖かくて居心地の良いベッドに行きたいです...