すごいH写経:6章
8/30にやったことまとめ。執筆しているのは8/31なのですが、記事の日にちと一日ずれるのはどうかと思ったので昨日の日付で投稿します。
やったこと:すごいH本、6章写経(~P102,章の2/3くらいまで)
意外と進まなかったという印象。覚えたことやひっかかったところをメモしておきますね
Data.Listモジュール
nub :: (Eq a) => [a] -> [a]
リストから重複する要素を取り除く関数
gourp :: (Eq a) => [a] -> a
リスト内で、隣接する同一要素をリストでまとめる関数
isInfixOf :: (Eq a) => [a] -> [a] -> Bool
a `isInfixOf` b は、aがbの先頭に含まれているかを判定してBoolを返す
find :: (a -> Bool) -> [a] -> Maybe a
find p lst はリストの中でpがtrueになる最初の要素をMaybeに包んで返す。
見つからなかったらNothingが返る
Data.Charモジュール
digitToInt :: Char -> Int
'0'から'9','A'から'F','a'から'f'の文字を数字に変換する。
ASCIIコードを返すわけではないので注意。
わからなかったこと(P102)
findKey :: (Eq k) => k -> [(k,v)] -> Maybe v
findKey key xs = foldr (\(k,v) acc -> if key==k then Just v else acc) Nothing xs
再帰より畳み込みのほうが読み易く理解しやすい(誰が見ても畳み込みだと分かる)とのことなのですが、何をどう畳み込んでいるのかよくわかっていません。
Nothingでひっかかっているのか、そうではないのか。改めて考えます。