ordered-containers-0.1.1: Set- and Map-like types that remember the order elements were inserted

Safe HaskellSafe
LanguageHaskell98

Data.Set.Ordered

Contents

Description

An OSet behaves much like a Set, with all the same asymptotics, but also remembers the order that values were inserted.

Synopsis

Documentation

data OSet a Source #

Instances
Foldable OSet Source #

Values appear in insertion order, not ascending order.

Instance details

Defined in Data.Set.Ordered

Methods

fold :: Monoid m => OSet m -> m #

foldMap :: Monoid m => (a -> m) -> OSet a -> m #

foldr :: (a -> b -> b) -> b -> OSet a -> b #

foldr' :: (a -> b -> b) -> b -> OSet a -> b #

foldl :: (b -> a -> b) -> b -> OSet a -> b #

foldl' :: (b -> a -> b) -> b -> OSet a -> b #

foldr1 :: (a -> a -> a) -> OSet a -> a #

foldl1 :: (a -> a -> a) -> OSet a -> a #

toList :: OSet a -> [a] #

null :: OSet a -> Bool #

length :: OSet a -> Int #

elem :: Eq a => a -> OSet a -> Bool #

maximum :: Ord a => OSet a -> a #

minimum :: Ord a => OSet a -> a #

sum :: Num a => OSet a -> a #

product :: Num a => OSet a -> a #

Eq a => Eq (OSet a) Source # 
Instance details

Defined in Data.Set.Ordered

Methods

(==) :: OSet a -> OSet a -> Bool #

(/=) :: OSet a -> OSet a -> Bool #

Ord a => Ord (OSet a) Source # 
Instance details

Defined in Data.Set.Ordered

Methods

compare :: OSet a -> OSet a -> Ordering #

(<) :: OSet a -> OSet a -> Bool #

(<=) :: OSet a -> OSet a -> Bool #

(>) :: OSet a -> OSet a -> Bool #

(>=) :: OSet a -> OSet a -> Bool #

max :: OSet a -> OSet a -> OSet a #

min :: OSet a -> OSet a -> OSet a #

(Ord a, Read a) => Read (OSet a) Source # 
Instance details

Defined in Data.Set.Ordered

Show a => Show (OSet a) Source # 
Instance details

Defined in Data.Set.Ordered

Methods

showsPrec :: Int -> OSet a -> ShowS #

show :: OSet a -> String #

showList :: [OSet a] -> ShowS #

Trivial sets

Insertion

Conventionts:

  • The open side of an angle bracket points to an OSet
  • The pipe appears on the side whose indices take precedence for keys that appear on both sides
  • The left argument's indices are lower than the right argument's indices

(<|) :: Ord a => a -> OSet a -> OSet a infixr 5 Source #

(|<) :: Ord a => a -> OSet a -> OSet a infixr 5 Source #

(>|) :: Ord a => OSet a -> a -> OSet a infixl 5 Source #

(|>) :: Ord a => OSet a -> a -> OSet a infixl 5 Source #

(<>|) :: Ord a => OSet a -> OSet a -> OSet a infixr 6 Source #

(|<>) :: Ord a => OSet a -> OSet a -> OSet a infixr 6 Source #

Query

size :: OSet a -> Int Source #

member :: Ord a => a -> OSet a -> Bool Source #

notMember :: Ord a => a -> OSet a -> Bool Source #

Deletion

delete :: Ord a => a -> OSet a -> OSet a Source #

filter :: Ord a => (a -> Bool) -> OSet a -> OSet a Source #

(\\) :: Ord a => OSet a -> OSet a -> OSet a Source #

Set difference: r \\ s deletes all the values in s from r. The order of r is unchanged.

Indexing

type Index = Int Source #

A 0-based index, much like the indices used by lists' !! operation. All indices are with respect to insertion order.

findIndex :: Ord a => a -> OSet a -> Maybe Index Source #

elemAt :: OSet a -> Index -> Maybe a Source #

List conversions

fromList :: Ord a => [a] -> OSet a Source #

If a value occurs multiple times, only the first occurrence is used.

toAscList :: OSet a -> [a] Source #

Returns values in ascending order. (Use toList to return them in insertion order.)