読者です 読者をやめる 読者になる 読者になる

mike-neckのブログ

JavaかJavaFXかJavaEE(なんかJava8が多め)

『すごいHaskell』第6章メモ

読書メモ haskell

このようなリストに対する標準的な再帰パターンでは、再帰を明示的に書くよりも、畳込みを使うほうがよいでしょう。そのほうが読みやすく理解しやすいからです。foldrの呼び出しは誰が見ても畳み込みですが、明示的な再帰を読むには考える時間が必要です。

『すごいHaskellたのしく学ぼう!』(p.102)

再帰を使った場合のコード

findKey:: (Eq k) => k -> [(k, v)] -> Maybe v
findKey _ [] = Nothing
findKey key ((k, v):xs)
    | k == key  = Just v
    | otherwise = findKey key xs

foldrを使った場合のコード

findKey:: (Eq k) => k -> [(k, v)] -> Maybe v
findKey =
    foldr
        (\(k, v) acc -> if k == key then Just v else acc)
        Nothing