実行順序???
最近Haskellで書いていないので。
とりあえず書いてみた
main = do n <- getLine cs <- getContents print.sum.map read.take (read n)$words cs
Applicativeを使ってdoを排除して書きたかったけど、
import Control.Applicative print' :: String -> String -> IO () print' n = print.sum.map read.take (read n).words main =print' <$>getLine<*>getContents
とすると、getLineとgetContentsが同時に評価されるのかな?
実行順序がよくわからないけれど、一つ入力したらそれでプログラムが終了してしまう。
これは、getLineを評価してからgetContentsを実行したいのに、実際はそうはなっていないことなんでしょうか?
うーん......