hw-rankselect-0.13.4.1: Rank-select
Safe HaskellNone
LanguageHaskell2010

HaskellWorks.Data.RankSelect.BitSeq

Synopsis

Documentation

newtype BitSeq Source #

Constructors

BitSeq 

Fields

Instances

Instances details
Show BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Generic BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Associated Types

type Rep BitSeq :: Type -> Type #

Methods

from :: BitSeq -> Rep BitSeq x #

to :: Rep BitSeq x -> BitSeq #

Semigroup BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

NFData BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Methods

rnf :: BitSeq -> () #

PopCount1 BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Methods

popCount1 :: BitSeq -> Count #

Snoc BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Methods

snoc :: BitSeq -> Elem BitSeq -> BitSeq #

Cons BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Methods

cons :: Elem BitSeq -> BitSeq -> BitSeq #

Container BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Associated Types

type Elem BitSeq #

Select1 BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Methods

select1 :: BitSeq -> Count -> Count #

Rank1 BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

Methods

rank1 :: BitSeq -> Count -> Count #

type Rep BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

type Rep BitSeq = D1 ('MetaData "BitSeq" "HaskellWorks.Data.RankSelect.Internal.BitSeq" "hw-rankselect-0.13.4.1-13ozP8Oue3m9kAKr19AkYG" 'True) (C1 ('MetaCons "BitSeq" 'PrefixI 'True) (S1 ('MetaSel ('Just "parens") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BitSeqFt)))
type Elem BitSeq Source # 
Instance details

Defined in HaskellWorks.Data.RankSelect.Internal.BitSeq

mempty :: Monoid a => a #

Identity of mappend

>>> "Hello world" <> mempty
"Hello world"

(<|) :: Cons v => Elem v -> v -> v infixr 5 #

(><) :: (Semigroup v, Container v) => v -> v -> v infixr 5 #

(|>) :: Snoc v => v -> Elem v -> v infixl 5 #

select1 #

Arguments

:: Select1 v 
=> v

The bitstring

-> Count

The number of ones

-> Count 

Find length of the shortest prefix of the given prefix that contains specified number of occurences of the bit 1

If the bitstring does not have enough occurences of bit 1 is insufficient to satisfy the query the result is undefined.

>>> import HaskellWorks.Data.Bits.BitRead
>>> :set -XTypeApplications
>>> select1 (unsafeBitRead @Word8 "00000000") 0
0
>>> select1 (unsafeBitRead @Word8 "00001000") 1
5
>>> select1 (unsafeBitRead @Word8 "11111111") 4
4
>>> select1 (unsafeBitRead @Word8 "00111111") 4
6
>>> select1 (unsafeBitRead @Word8 "10011111") 4
6