合計を求めるプログラム
標準入力の各行にある数の合計を求めるプログラムを書いた。
main = do cs <- getContents print . sum . map read $ lines cs
以前はread関数を知らなかったので、ord関数とリスト操作を頑張ってやっていた。
readってすばらしい。けど、実数は読めないみたいだ。パースに失敗するエラーがでる。
追記
nさんのコメントに従って、書き直してみた。
odzさんのトラックバックに従って、警告を出すようにした。
main = do cs <- getContents print . sum . map (read :: String -> Double) $ lines cs
そんで、コンパイルあんど実行。
ghc -Wall sum.hs -o sum $ sum.hs:1:0: Warning: Definition but no type signature for `main' $ more test.txt 1.1 2.2 3.3 4.4 5.5 $ ./sum < test.txt 16.5
mainのシグネチャを定義してないと注意がでるけども、動いた。
型をしっかりと指定すべきということなんすね。
通りすがりのnさん。ありがとうございます。
警告を出していれば、解かったはずでした。
odzさん。ありがとうございます。