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