$Id: errata.html 550 2008-03-16 15:00:16Z aamine $
質問や間違いの指摘などはメールで aamine AT loveruby.net (AT は @ に置き換え) までお願いします。
予約語一覧の単語が間違っています。
誤: inflxr
正: infixr
優先順位 9、右結合の欄にある「..」は「.」の間違いです。
誤: 文字列をパターン(x:xs)で受けて
正: リストをパターン(x:xs)で受けて
誤: USA-stats.txt
正: USA-states.txt
ページ前半のリストで、'f' が抜けている
誤:
→ ['a', 'b', 'c', '@', 'd', 'e', '\n'] → "abc@de\n"
正:
→ ['a', 'b', 'c', '@', 'd', 'e', 'f', '\n'] → "abc@def\n"
誤: match pattern = any . (pattern `isPrefixOf`) . tails
正: match pattern = any (pattern `isPrefixOf`) . tails
誤: (translate c1) : (map f cs1)
正: (translate c1) : (map translate cs1)
誤: if式を簡約します。その過程で(==)関数のパターンマッチが起こり、cが評価されます。
正: if式を簡約します。その過程で(==)関数のパターンマッチが起こり、c1が評価されます。
誤: trancate
正: truncate
将棋は「打つ」ではなく「指す」のが正しいそうです。 ただ、このページの「打つ」を「指す」に変えると 文章のつながりを維持するのが難しくなるため、 少なくとも初版のあいだは現在の文章のままにとどめます。
誤: リスト 12.9 Database型の定義
正: リスト 12.9 pagePath関数(Database.hs)
誤: captionパーサからparagraphパーサまでは、各プロック要素のパーサです。
正: headlineパーサからparagraphパーサまでは、各プロック要素のパーサです。
誤: つまり、captionパーサは行の最初の文字が「=」である行を受け付けます。
正: つまり、headlineパーサは行の最初の文字が「=」である行を受け付けます。
誤: captionパーサの意味値は、行をh1〜h6エレメントにコンパイルした値です。
正: headlineパーサの意味値は、行をh1〜h6エレメントにコンパイルした値です。
「unlines関数」であるべきだが「lines関数」と書かれているところが 2 点あります。
誤: join関数は、段落の……連結します。lines関数にも似た働きですが、……違います。lines関数だと末尾に改行が付きます。
正: join関数は、段落の……連結します。unlines関数にも似た働きですが、……違います。unlines関数だと末尾に改行が付きます。
誤: 「test x」がTrueであるときに限って、「Just (x, xs)」を返します。……
正: 「f x」がTrueであるときに限って、「Just (x, xs)」を返します。……
誤: 監訳者
正: 監修者
誤: readTemplate id = readFile (((prefix repo) ++ "/") ++ id)
正: readTemplate id = readFile ((prefix repo) ++ ("/" ++ id))
問題は tail.hs をポイントフリーにせよとなっていますが、 p.361 の解答例がポイントフリー版 head.hs になってしまっています。 正しい解答例は以下の通りです。
main = do cs <- getContents putStr $ lastNLines 10 cs lastNLines n = unlines . takeLast n . lines takeLast n = reverse . take n . reverse
間違いではありませんが、
問 2, 問 3 の解答例には main の型宣言があるのにも関わらず
問 1 の解答例には main の型宣言「main :: IO ()
」がありません。
型宣言を追加したほうがよいでしょう。