aoc2020-0.1.0.0: Development environment for Advent of Code challenges
Safe HaskellNone
LanguageHaskell2010

AOC.Common.FinitarySet

Documentation

newtype FinitarySet a Source #

Constructors

FinitarySet (Vector (Cardinality a) Bit) 

Instances

Instances details
Eq (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

Ord (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

Show (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

Generic (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

Associated Types

type Rep (FinitarySet a) :: Type -> Type #

Methods

from :: FinitarySet a -> Rep (FinitarySet a) x #

to :: Rep (FinitarySet a) x -> FinitarySet a #

NFData (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

Methods

rnf :: FinitarySet a -> () #

(Finitary a, KnownNat (2 ^ Cardinality a)) => Finitary (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

Associated Types

type Cardinality (FinitarySet a) :: Nat

type Rep (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

type Rep (FinitarySet a) = D1 ('MetaData "FinitarySet" "AOC.Common.FinitarySet" "aoc2020-0.1.0.0-FyPlSv9LBbs5G4MoObRXVm" 'True) (C1 ('MetaCons "FinitarySet" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Vector (Cardinality a) Bit))))
type Cardinality (FinitarySet a) Source # 
Instance details

Defined in AOC.Common.FinitarySet

type Cardinality (FinitarySet a) = GCardinality (Rep (FinitarySet a))

empty :: KnownNat (Cardinality a) => FinitarySet a Source #

singleton :: Finitary a => a -> FinitarySet a Source #

insert :: Finitary a => a -> FinitarySet a -> FinitarySet a Source #

delete :: Finitary a => a -> FinitarySet a -> FinitarySet a Source #

fromList :: Finitary a => [a] -> FinitarySet a Source #

toList :: Finitary a => FinitarySet a -> [a] Source #

unions :: Finitary a => [FinitarySet a] -> FinitarySet a Source #

member :: Finitary a => a -> FinitarySet a -> Bool Source #

notMember :: Finitary a => a -> FinitarySet a -> Bool Source #

cartesianProduct :: (KnownNat (Cardinality a), KnownNat (Cardinality a * Cardinality b)) => FinitarySet a -> FinitarySet b -> FinitarySet (a, b) Source #

foldr :: Finitary a => (a -> b -> b) -> b -> FinitarySet a -> b Source #

foldr' :: Finitary a => (a -> b -> b) -> b -> FinitarySet a -> b Source #

foldl :: Finitary a => (b -> a -> b) -> b -> FinitarySet a -> b Source #

foldl' :: Finitary a => (b -> a -> b) -> b -> FinitarySet a -> b Source #

map :: (Finitary a, Finitary b) => (a -> b) -> FinitarySet a -> FinitarySet b Source #

foldMap :: (Finitary a, Monoid m) => (a -> m) -> FinitarySet a -> m Source #

filter :: Finitary a => (a -> Bool) -> FinitarySet a -> FinitarySet a Source #

alterF :: (Finitary a, Functor f) => (Bool -> f Bool) -> a -> FinitarySet a -> f (FinitarySet a) Source #

generate :: Finitary a => (a -> Bool) -> FinitarySet a Source #

powerSet :: (Finitary a, KnownNat (2 ^ Cardinality a)) => FinitarySet a -> FinitarySet (FinitarySet a) Source #

mapMaybe :: (Finitary a, Finitary b) => (a -> Maybe b) -> FinitarySet a -> FinitarySet b Source #

partition :: Finitary a => (a -> Bool) -> FinitarySet a -> (FinitarySet a, FinitarySet a) Source #