wvogel日記

自分用の技術備忘録が多めです.

圏論

「ふつうのHaskellプログラミング」にあった、

main = do cs <- getContents
          putStr $ lastNLines 5 cs

lastNLines n = unlines.takeLast n.lines
takeLast n = reverse.take n.reverse

を、モナドを使って書きなおす
単純に

main = getContents >>= putStr.lastNLines 5

lastNLines n = unlines.takeLast n.lines
takeLast n = reverse.take n.reverse

ポイントフリースタイルを使ってがちがちにしちゃうと、

main = getContents >>= putStr.unlines.reverse.take 5.reverse.lines

なにごとも、ほどほどが大事ですね