This creates the boolean algebra of sets from any base boolean algebra. note that the sets created are true sets in the mathematical sense, not the usual programatic aproximation.

A generalized set can be thought of as a map from keys to boolean values. perhaps the 'map with default' should be seperated out?

data Set k v = Set v (Map k v)
combine :: (v -> v -> v) -> Set k v -> Set k v -> Set k v
member :: k -> Set k v -> v
Produced by Haddock version 0.6