指定した桁数で改行を入れる

おおー、id:hakobe932くんもHaskellかー。id:hakobe932:20061215:1166201940
僕も大体同じ動きをするプログラムを書いてみました。参考まで。

module Main (main) where

import System (getArgs)
import System.IO (stderr, hPutStrLn)

readFiles :: [String] -> IO String
readFiles []    = getContents
readFiles files = return . concat =<< mapM readFile files

groupn :: Int -> [a] -> [[a]]
groupn _ [] = []
groupn n s  = s1 : groupn n s2
  where
    (s1, s2) = splitAt n s

filln :: Int -> [FilePath] -> IO ()
filln column files =
  putStr . unlines . concatMap (groupn column) . lines =<< readFiles files

main :: IO ()
main = do
  args <- getArgs
  case args of
    (column : files) -> filln (read column) files
    _                -> usage
  where
    usage = hPutStrLn stderr $ "usage: filln column files..."