与えられたリストのすべての数の階乗を計算し、それを画面に出力するHaskell関数を作成しました。
factPrint list =
if null list
then putStrLn ""
else do putStrLn ((show.fact.head) list)
factPrint (tail list)
関数は機能しますが、3行目は少しわかりにくいです。「putStrLn」(準?)関数の前に「do」がないのに、コンパイラ(GHC)がエラーを報告しないのはなぜですか?4行目から「do」を省略すると、期待どおりにエラーが表示されます。
私はHaskellとその方法にまったく慣れていないので、過度に愚かなことを言った場合はご容赦ください。