argius note

プログラミング関連

指定した文字数で改行

テキスト*1P.191の問題。頑張ってはみたものの、型の問題ではまって断念。解答例を参考に、「もし自力で解けていたら」のコード。"splitLine"はほぼそのまま。

splitLine n line = case splitAt n line of
        (s, "") -> [s]
        (s, ss) -> s : splitLine n ss

splitLines n = unlines . concatMap ( splitLine n )

main = do cs <- getContents
          putStrLn $ splitLines 40 $ lines cs

学習ポイントは、"map","部分適用(カリー化?)","ポイントフリー"です。

*1:http://d.hatena.ne.jp/argius/20061219/1166542654