module Sets where type Set a = [a] isSubset :: Eq a => Set a -> Set a -> Bool sameSet :: Eq a => Set a -> Set a -> Bool powerSet :: Set a -> Set (Set a) union :: Eq a => Set a -> Set a -> Set a intersection :: Eq a => Set a -> Set a -> Set a setProduct :: Set a -> Set b -> Set (a,b) disjointUnion :: (Eq a, Eq b) => Set a -> Set b -> Set (Either a b) setDifference :: Eq a => Set a -> Set a -> Set a