http://gihyo.jp/dev/feature/01/functional-prog/0003 の正誤表
下の記事をやっていたら、説明が間違っていると思われる箇所や、うまく動かないサンプルコードがあったので正誤表を書いてみた。
Haskell歴2日なので、至らない点があるのであればご教授いただけると助かります。
図3の正誤表
mapに関数渡してなかった。
-- '1'にisDigitが適用され,残りのリストにコンスされる - isDigit '1' : map ['a'] + isDigit '1' : map isDigit ['a'] -- ↓ -- isDigit '1'がTrueになる - True : map ['a'] + True : map isDigit ['a']
リスト1の正誤表
そのままだと動かなかった。
maxDupStrの定義に関しては、こうしたら動いたというだけなのでなんとも。
makePairの方は、単純に第一引数が抜け落ちてた。
--最長重複文字列を計算する maxDupStr :: [Char] -> [Char] -maxDupStr = extract . chooseMax . calcLen . makePair . sort . tails +maxDupStr xs = extract(chooseMax(calcLen(makePair(sort(tails xs))))) --隣り合う要素を組にする -makePair :: -> [([Char], [Char])] +makePair :: [[Char]] -> [([Char], [Char])] makePair xs = zip xs (tail xs)