Safe Haskell | None |
---|---|
Language | Haskell2010 |
A bitset with one interface. This includes the often-encountered case
where {u,v},{v}
, or sets with a single edge between the old set and a new
singleton set are required. Uses are Hamiltonian path problems, and TSP,
among others.
Synopsis
- data BitSet1 i ioc = BitSet1 {}
- boundary :: forall i ioc i. Lens (BitSet1 i ioc) (BitSet1 i ioc) (Boundary i ioc) (Boundary i ioc)
- bitset :: forall i ioc. Lens' (BitSet1 i ioc) (BitSet ioc)
- streamUpMk :: Monad m => Int -> Int -> z -> m (z, Maybe (BitSet1 c ioc))
- streamUpStep :: Monad m => Int -> Int -> (t, Maybe (BitSet1 c ioc)) -> m (Step (t, Maybe (BitSet1 c ioc)) (t :. BitSet1 c ioc))
- streamDownMk :: Monad m => Int -> Int -> z -> m (z, Maybe (BitSet1 c ioc))
- streamDownStep :: Monad m => Int -> Int -> (t, Maybe (BitSet1 c ioc)) -> m (Step (t, Maybe (BitSet1 c ioc)) (t :. BitSet1 c ioc))
Documentation
The bitset with one interface or boundary.
Instances
Vector Vector (BitSet1 i ioc) Source # | |
Defined in Data.PrimitiveArray.Index.BitSet1 basicUnsafeFreeze :: PrimMonad m => Mutable Vector (PrimState m) (BitSet1 i ioc) -> m (Vector (BitSet1 i ioc)) # basicUnsafeThaw :: PrimMonad m => Vector (BitSet1 i ioc) -> m (Mutable Vector (PrimState m) (BitSet1 i ioc)) # basicLength :: Vector (BitSet1 i ioc) -> Int # basicUnsafeSlice :: Int -> Int -> Vector (BitSet1 i ioc) -> Vector (BitSet1 i ioc) # basicUnsafeIndexM :: Monad m => Vector (BitSet1 i ioc) -> Int -> m (BitSet1 i ioc) # basicUnsafeCopy :: PrimMonad m => Mutable Vector (PrimState m) (BitSet1 i ioc) -> Vector (BitSet1 i ioc) -> m () # elemseq :: Vector (BitSet1 i ioc) -> BitSet1 i ioc -> b -> b # | |
MVector MVector (BitSet1 i ioc) Source # | |
Defined in Data.PrimitiveArray.Index.BitSet1 basicLength :: MVector s (BitSet1 i ioc) -> Int # basicUnsafeSlice :: Int -> Int -> MVector s (BitSet1 i ioc) -> MVector s (BitSet1 i ioc) # basicOverlaps :: MVector s (BitSet1 i ioc) -> MVector s (BitSet1 i ioc) -> Bool # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (BitSet1 i ioc)) # basicInitialize :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> m () # basicUnsafeReplicate :: PrimMonad m => Int -> BitSet1 i ioc -> m (MVector (PrimState m) (BitSet1 i ioc)) # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> Int -> m (BitSet1 i ioc) # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> Int -> BitSet1 i ioc -> m () # basicClear :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> m () # basicSet :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> BitSet1 i ioc -> m () # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> MVector (PrimState m) (BitSet1 i ioc) -> m () # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> MVector (PrimState m) (BitSet1 i ioc) -> m () # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (BitSet1 i ioc) -> Int -> m (MVector (PrimState m) (BitSet1 i ioc)) # | |
Show (LimitType (BitSet1 bnd ioc)) Source # | |
IndexStream z => IndexStream (z :. BitSet1 i O) Source # | |
IndexStream z => IndexStream (z :. BitSet1 i I) Source # | |
Eq (BitSet1 i ioc) Source # | |
Ord (BitSet1 i ioc) Source # | |
Defined in Data.PrimitiveArray.Index.BitSet1 compare :: BitSet1 i ioc -> BitSet1 i ioc -> Ordering # (<) :: BitSet1 i ioc -> BitSet1 i ioc -> Bool # (<=) :: BitSet1 i ioc -> BitSet1 i ioc -> Bool # (>) :: BitSet1 i ioc -> BitSet1 i ioc -> Bool # (>=) :: BitSet1 i ioc -> BitSet1 i ioc -> Bool # | |
Show (BitSet1 i ioc) Source # | |
Generic (BitSet1 i ioc) Source # | |
Arbitrary (BitSet1 t ioc) Source # | |
Unbox (BitSet1 i ioc) Source # | |
Defined in Data.PrimitiveArray.Index.BitSet1 | |
IndexStream (Z :. BitSet1 i t) => IndexStream (BitSet1 i t) Source # | |
Index (BitSet1 bnd ioc) Source # | NOTE We linearize a bitset as follows: we need | TODO The size calculations are off by a factor of two, exactly. Each
bitset (say) |
Defined in Data.PrimitiveArray.Index.BitSet1 linearIndex :: LimitType (BitSet1 bnd ioc) -> BitSet1 bnd ioc -> Int Source # size :: LimitType (BitSet1 bnd ioc) -> Int Source # inBounds :: LimitType (BitSet1 bnd ioc) -> BitSet1 bnd ioc -> Bool Source # zeroBound :: BitSet1 bnd ioc Source # zeroBound' :: LimitType (BitSet1 bnd ioc) Source # totalSize :: LimitType (BitSet1 bnd ioc) -> [Integer] Source # | |
SetPredSucc (BitSet1 t ioc) Source # | |
data MVector s (BitSet1 i ioc) Source # | |
Defined in Data.PrimitiveArray.Index.BitSet1 | |
type Rep (BitSet1 i ioc) Source # | |
Defined in Data.PrimitiveArray.Index.BitSet1 type Rep (BitSet1 i ioc) = D1 (MetaData "BitSet1" "Data.PrimitiveArray.Index.BitSet1" "PrimitiveArray-0.9.0.0-7o4e78MXLzPCxIvR95QAvs" False) (C1 (MetaCons "BitSet1" PrefixI True) (S1 (MetaSel (Just "_bitset") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (BitSet ioc)) :*: S1 (MetaSel (Just "_boundary") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Boundary i ioc)))) | |
data Vector (BitSet1 i ioc) Source # | |
data LimitType (BitSet1 bnd ioc) Source # | |
Defined in Data.PrimitiveArray.Index.BitSet1 |
boundary :: forall i ioc i. Lens (BitSet1 i ioc) (BitSet1 i ioc) (Boundary i ioc) (Boundary i ioc) Source #