I feel that Data.Set and Data.Map should be working together more
closely.  For example you can already get the keyset of a Map, but the
`other way' is not built-in.  I mean a function with a signature like

Ord k => Data.Set.Set k -> (k->v) -> Data.Map.Map k v

You can implement it in O(n):

> assoc :: (a->b) -> [a] -> [(a,b)]
> assoc f = map (\x -> (x, f x))

> mapToMap :: Ord k => (k -> v) -> Data.Set.Set k -> Data.Map.Map k v
> mapToMap f = Data.Map.fromAscList . assoc f . Data.Set.toAscList

The name assoc alludes to the assoc-lists of Lisp.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to