-fno-warn-unused-do-bind
Haskell でコンパイルするとき (ghci) にはいつも -Wall オプションをつけるようにしている。でもそれがかえって邪魔になる場合がある。例えばどんなときかというと、以下のようなコードの場合。
parseFloat :: Parser LispVal parseFloat = do num1 <- many1 digit char '.' // ここで警告が出力される num2 <- many1 digit return . Float . dig2float $ num1 ++ "." ++ num2
コンパイルすると、次のようなメッセージが表示される。
Warning: A do-notation statement discarded a result of type Char. Suppress this warning by saying "_ <- char '.'", or by using the flag -fno-warn-unused-do-bind
この警告はさすがにうるさい。 返り値を利用しない場合でも、明示的に _ <- char '.' とせよと。 _ <- と書かないことが明示的に返り値は使用しない、ということを表してるんだと思うけど。
とりあえず警告のメッセージに出ている -fno-warn-unused-do-bind を ~/.ghci に追加して、このメッセージが出ないようにした。
現在の ~/.ghci の中身はこんな感じ。
:set -Wall :set -fno-warn-type-defaults :set -fno-warn-unused-do-bind :set editor vim :def hoogle \x -> return $ ":!hoogle \"" ++ x ++ "\""