Cabal- A framework for packaging Haskell software

Safe HaskellNone




data NubList a Source

NubList : A de-duplicated list that maintains the original order.


Eq a => Eq (NubList a) Source 


(==) :: NubList a -> NubList a -> Bool

(/=) :: NubList a -> NubList a -> Bool

(Ord a, Read a) => Read (NubList a) Source 
Show a => Show (NubList a) Source 


showsPrec :: Int -> NubList a -> ShowS

show :: NubList a -> String

showList :: [NubList a] -> ShowS

Ord a => Monoid (NubList a) Source

Monoid operations on NubLists. For a valid Monoid instance we need to satistfy the required monoid laws; identity, associativity and closure.

Identity : by inspection: mempty mappend NubList xs == NubList xs mappend mempty

Associativity : by inspection: (NubList xs mappend NubList ys) mappend NubList zs == NubList xs mappend (NubList ys mappend NubList zs)

Closure : appending two lists of type a and removing duplicates obviously does not change the type.


mempty :: NubList a

mappend :: NubList a -> NubList a -> NubList a

mconcat :: [NubList a] -> NubList a

(Ord a, Binary a) => Binary (NubList a) Source

Binary instance for 'NubList a' is the same as for '[a]'. For put, we just pull off constructor and put the list. For get, we get the list and make a NubList out of it using toNubList.


put :: NubList a -> Put

get :: Get (NubList a)

toNubList :: Ord a => [a] -> NubList a Source

Smart constructor for the NubList type.

overNubList :: Ord a => ([a] -> [a]) -> NubList a -> NubList a Source

Lift a function over lists to a function over NubLists.

data NubListR a Source

NubListR : A right-biased version of NubList. That is toNubListR ["-XNoFoo", "-XFoo", "-XNoFoo"] will result in ["-XFoo", "-XNoFoo"], unlike the normal NubList, which is left-biased. Built on top of ordNubRight and listUnionRight.


toNubListR :: Ord a => [a] -> NubListR a Source

Smart constructor for the NubListR type.

overNubListR :: Ord a => ([a] -> [a]) -> NubListR a -> NubListR a Source

Lift a function over lists to a function over NubListRs.