私はまだHaskellを探求し始めています。私はこのコードがIOモナドで「実行」されることを知っています。そのl <- ...行から次の行に移動すると、IO - bindが呼び出されます。
Haskellは怠惰なので、l評価されることはないと考えることができます。しかし、「bind」は常に前のコマンドを評価します、そうですか?プログラムが「file-not-found」エラーを生成するためです。
main = do
l <- mapM readFile [ "/tmp/notfound" ]
return ()