# Key-value apply

### From HaskellWiki

Revision as of 16:05, 15 February 2007 by MathematicalOrchid (Talk | contribs)

I just wrote this function:

apply :: (Ord k) => k -> v -> (v -> v) -> [(k,v)] -> [(k,v)] apply k v f ds = let (p1,px) = span ( (k >) . fst) ds (p2,p3) = case px of [] -> ((k,v),[]) (x:xs) -> if fst x == k then ((k, f $ snd x), xs) else ((k, v), x:xs) in p1 ++ (p2 : p3)

As you can see (?!), this takes a list of key/value pairs and processes it as follows:

- The function is given a key to look for.
- If the key is found, a function is applied to the associated value.
- If the key is
*not*found, it is inserted (at the correct place) with a specified 'default value'.

apply

apply

Ord

apply