Safe Haskell | Safe |
---|---|
Language | Haskell98 |
Synopsis
- data T a
- insert :: Ord a => a -> Set a -> T a
- singleton :: a -> T a
- member :: Ord a => a -> T a -> Bool
- size :: T a -> Int
- fromList :: Ord a => T [] a -> T a
- fromAscList :: Ord a => T [] a -> T a
- toAscList :: T a -> T [] a
- fetch :: Ord a => Set a -> Maybe (T a)
- flatten :: Ord a => T a -> Set a
- union :: Ord a => T a -> T a -> T a
- unionLeft :: Ord a => Set a -> T a -> T a
- unionRight :: Ord a => T a -> Set a -> T a
- findMin :: T a -> a
- findMax :: T a -> a
- delete :: Ord k => k -> T k -> Set k
- deleteMin :: T a -> Set a
- deleteMax :: Ord a => T a -> Set a
- deleteFindMin :: T a -> (a, Set a)
- deleteFindMax :: Ord a => T a -> (a, Set a)
- minView :: T a -> (a, Set a)
- maxView :: Ord a => T a -> (a, Set a)
Documentation
insert :: Ord a => a -> Set a -> T a Source #
We cannot have a reasonable instance Insert Set
,
since the instance Insert (NonEmpty Set)
would preserve duplicate leading elements, whereas Set
does not.
However, the instance Insert NonEmpty
is not the problem.
A general type like
insertSet :: (Insert f, Ord a) => a -> f a -> NonEmpty f a
cannot work, since it can be instantiated to
insertSet :: (Ord a) => a -> NonEmpty Set a -> NonEmpty (NonEmpty Set) a
and this is obviously wrong:
insertSet x (singleton x)
has only one element, not two.
deleteFindMin :: T a -> (a, Set a) Source #