基本的な構文

7.8 本章のまとめ


練習問題がんばるぞ!

7.9 練習問題


いつものようにまずは自力でやってみます。
まずは実験。

Prelude> splitAt 3 [0,1,2,3,4]
([0,1,2],[3,4])
Prelude> splitAt 60 [0,1,2,3,4]
([0,1,2,3,4],[])


なるほど、引数のリストよりも大きい数値に対して関数適用すると、
タプルの第一要素に引数のリストがそのまま入るんですね。
というわけでこんな感じ。

  • fold.hs
{--
  7.9 練習問題
  2010/7/11 written by yohpapa
 --}

{--
  mainアクション
  標準出力から読み込んで、60バイトおきに改行する。
 --}
main = do cs <- getContents
          putStr $ unlines $ map (myFold 60) $ lines cs

{--
  myFold関数
  文字列を受け取り、指定バイトおきに改行文字を挿入する。
 --}
myFold :: Int -> String -> String
myFold _ [] = []
myFold n cs = let (cs1, cs2) = splitAt n cs
              in
                cs1 ++ "\n" ++ myFold n cs2


なかなかいい感じです。
おっと今日は参議院選挙だ!