noritsuguの日記

2006-06-29ふつける 第8章 読了

無名関数関数合成部分適用の章

  • (p.205) 「セクション」 初耳
  • (p.213) 第4章で、prefixp に pattern を引数として渡せないのかな?と思った疑問が解決できて良かった

練習問題

問題1

lstrip :: String -> String
lstrip = dropWhile (== ' ')

isSpace じゃなきゃダメだった…。問題良く読め!


問題2

rstrip :: String -> String
rstrip = reverse . lstrip . reverse

問題3

strip :: String -> String
strip = rstrip . lstrip

問題4

main = do cs <- getContents
          putStr $ lastNLines 10 cs

lastNLines n = unlines . takeLast n . lines

takeLast n = reverse . take n . reverse

解答例は、head.hs の書き換えのようだ。

正誤表に載っているが、その修正例も間違っているようだ。


問題5

import System
import List

main = do args <- getArgs
          cs <- getContents
          putStr $ fgrep (head args) cs

fgrep :: String -> String -> String
fgrep pattern = unlines . filter match . lines
  where
    match :: String -> Bool
    match = any prefixp . tails

    prefixp :: String -> Bool
    prefixp = isPrefixOf pattern

解答例は、where なしのリスト 8.2 だった

トラックバック - http://haskell.g.hatena.ne.jp/noritsugu/20060629