次のコードで "15" を整数に変換して結果を出力することを期待していますが、エラーがスローされます。
main = print $ read "15" :: Integer
Couldn't match expected type `Integer' with actual type `IO ()'
しかし、使用するだけで問題なくmain = print (read "15" :: Integer)
動作します。私は、$ が実質的に残りの行を括弧で囲んでいるという印象を受けました。この場合 $ が機能しないのはなぜですか?