基本的な構文
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
なかなかいい感じです。
おっと今日は参議院選挙だ!