marg-do's

関数型生活

Lispのassocみたいなもの

assoc :: Eq a => a -> [(a, b)] -> Maybe (a, b)
assoc itm [] = Nothing
assoc itm lst = if (fst tpl) == itm then Just tpl
                        else assoc itm $ tail lst
    where tpl = head lst
追記

畳込関数を使った方が分かり易い

assoc :: Eq a => a -> [(a,b)] -> Maybe (a, b)
assoc itm lst = foldr
                          (¥(k, v) acc -> if k == itm then Just (k,v) else acc)
                          Nothing xs