Cabal-3.10.1.0: A framework for packaging Haskell software

Safe Haskell | Safe-Inferred
Language | Haskell2010

Distribution.Utils.NubList

Synopsis

- data NubList a
- toNubList :: Ord a => [a] -> NubList a
- fromNubList :: NubList a -> [a]
- overNubList :: Ord a => ([a] -> [a]) -> NubList a -> NubList a
- data NubListR a
- toNubListR :: Ord a => [a] -> NubListR a
- fromNubListR :: NubListR a -> [a]
- overNubListR :: Ord a => ([a] -> [a]) -> NubListR a -> NubListR a

# Documentation

data NubList a Source #

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

#### Instances

Instances details

Structured a => Structured (NubList a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods structure :: Proxy (NubList a) -> Structure Source # structureHash' :: Tagged (NubList a) MD5

Ord a => Monoid (NubList a) Source #

Monoid operations on NubLists. For a valid Monoid instance we need to satisfy 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.

Instance details Defined in Distribution.Utils.NubList Methods mempty :: NubList a Source # mappend :: NubList a -> NubList a -> NubList a Source # mconcat :: [NubList a] -> NubList a Source #
Ord a => Semigroup (NubList a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods (<>) :: NubList a -> NubList a -> NubList a Source # sconcat :: NonEmpty (NubList a) -> NubList a Source # stimes :: Integral b => b -> NubList a -> NubList a Source #
Generic (NubList a) Source # |
Instance details Defined in Distribution.Utils.NubList Associated Types type Rep (NubList a) :: Type -> Type Source # Methods from :: NubList a -> Rep (NubList a) x Source # to :: Rep (NubList a) x -> NubList a Source #
(Ord a, Read a) => Read (NubList a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods readsPrec :: Int -> ReadS (NubList a) Source # readList :: ReadS [NubList a] Source # readPrec :: ReadPrec (NubList a) Source # readListPrec :: ReadPrec [NubList a] Source #
Show a => Show (NubList a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods showsPrec :: Int -> NubList a -> ShowS Source # show :: NubList a -> String Source # showList :: [NubList a] -> ShowS Source #
(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`.
Instance details Defined in Distribution.Utils.NubList Methods put :: NubList a -> Put # get :: Get (NubList a) # putList :: [NubList a] -> Put #
Eq a => Eq (NubList a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods (==) :: NubList a -> NubList a -> Bool # (/=) :: NubList a -> NubList a -> Bool #
type Rep (NubList a) Source # |
Instance details Defined in Distribution.Utils.NubList type Rep (NubList a) = D1 ('MetaData "NubList" "Distribution.Utils.NubList" "Cabal-3.10.1.0" 'True) (C1 ('MetaCons "NubList" 'PrefixI 'True) (S1 ('MetaSel ('Just "fromNubList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))

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

Smart constructor for the NubList type.

fromNubList :: NubList a -> [a] Source #

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`.

#### Instances

Instances details

Ord a => Monoid (NubListR a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods mempty :: NubListR a Source # mappend :: NubListR a -> NubListR a -> NubListR a Source # mconcat :: [NubListR a] -> NubListR a Source #
Ord a => Semigroup (NubListR a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods (<>) :: NubListR a -> NubListR a -> NubListR a Source # sconcat :: NonEmpty (NubListR a) -> NubListR a Source # stimes :: Integral b => b -> NubListR a -> NubListR a Source #
(Ord a, Read a) => Read (NubListR a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods readsPrec :: Int -> ReadS (NubListR a) Source # readList :: ReadS [NubListR a] Source # readPrec :: ReadPrec (NubListR a) Source # readListPrec :: ReadPrec [NubListR a] Source #
Show a => Show (NubListR a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods showsPrec :: Int -> NubListR a -> ShowS Source # show :: NubListR a -> String Source # showList :: [NubListR a] -> ShowS Source #
Eq a => Eq (NubListR a) Source # |
Instance details Defined in Distribution.Utils.NubList Methods (==) :: NubListR a -> NubListR a -> Bool # (/=) :: NubListR a -> NubListR a -> Bool #

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

Smart constructor for the NubListR type.

fromNubListR :: NubListR a -> [a] Source #

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

Lift a function over lists to a function over NubListRs.