cat -nコマンドでポイントフリースタイル

Haskellのプログラムをリファクタリングしていくと、どんどん変数が減っていきます。ポイントフリースタイルです。
これをやりすぎると読みにくくなるので、特に引数を省略する場合には、型を明示的に記述した方がよいですね。
ということでcat -n相当のプログラム。初めてuncurry関数を使いました。こう使うのか。

module Main (main) where

import Text.Printf (printf)

main :: IO ()
main = putStr . numbering =<< getContents
  where
    numbering :: String -> String
    numbering = unlines . map (uncurry format) . zip [1 ..] . lines

    format :: Int -> String -> String
    format = printf "%6d  %s"

-- Local Variables:
-- compile-command: "ghc -W -fno-warn-unused-matches --make -o catn catn"
-- End: