iota
Safe HaskellNone
LanguageGHC2021

Algorithm.TwoPointers

Synopsis

Documentation

data Window a Source #

[l, r)

Constructors

Window 

Fields

Instances

Instances details
Unbox a => Vector Vector (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

Methods

basicUnsafeFreeze :: Mutable Vector s (Window a) -> ST s (Vector (Window a))

basicUnsafeThaw :: Vector (Window a) -> ST s (Mutable Vector s (Window a))

basicLength :: Vector (Window a) -> Int

basicUnsafeSlice :: Int -> Int -> Vector (Window a) -> Vector (Window a)

basicUnsafeIndexM :: Vector (Window a) -> Int -> Box (Window a)

basicUnsafeCopy :: Mutable Vector s (Window a) -> Vector (Window a) -> ST s ()

elemseq :: Vector (Window a) -> Window a -> b -> b

Unbox a => MVector MVector (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

Methods

basicLength :: MVector s (Window a) -> Int

basicUnsafeSlice :: Int -> Int -> MVector s (Window a) -> MVector s (Window a)

basicOverlaps :: MVector s (Window a) -> MVector s (Window a) -> Bool

basicUnsafeNew :: Int -> ST s (MVector s (Window a))

basicInitialize :: MVector s (Window a) -> ST s ()

basicUnsafeReplicate :: Int -> Window a -> ST s (MVector s (Window a))

basicUnsafeRead :: MVector s (Window a) -> Int -> ST s (Window a)

basicUnsafeWrite :: MVector s (Window a) -> Int -> Window a -> ST s ()

basicClear :: MVector s (Window a) -> ST s ()

basicSet :: MVector s (Window a) -> Window a -> ST s ()

basicUnsafeCopy :: MVector s (Window a) -> MVector s (Window a) -> ST s ()

basicUnsafeMove :: MVector s (Window a) -> MVector s (Window a) -> ST s ()

basicUnsafeGrow :: MVector s (Window a) -> Int -> ST s (MVector s (Window a))

Generic (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

Associated Types

type Rep (Window a) 
Instance details

Defined in Algorithm.TwoPointers

type Rep (Window a) = D1 ('MetaData "Window" "Algorithm.TwoPointers" "iota-0.1.0.0-K57kM7oGwkoB362Pk0qRM8" 'False) (C1 ('MetaCons "Window" 'PrefixI 'True) (S1 ('MetaSel ('Just "leftW") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "rightW") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "contextW") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))))

Methods

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

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

Show a => Show (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

Methods

showsPrec :: Int -> Window a -> ShowS #

show :: Window a -> String #

showList :: [Window a] -> ShowS #

Eq a => Eq (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

Methods

(==) :: Window a -> Window a -> Bool #

(/=) :: Window a -> Window a -> Bool #

Ord a => Ord (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

Methods

compare :: Window a -> Window a -> Ordering #

(<) :: Window a -> Window a -> Bool #

(<=) :: Window a -> Window a -> Bool #

(>) :: Window a -> Window a -> Bool #

(>=) :: Window a -> Window a -> Bool #

max :: Window a -> Window a -> Window a #

min :: Window a -> Window a -> Window a #

Unbox a => Unbox (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

IsoUnbox (Window a) (Int, Int, a) Source # 
Instance details

Defined in Algorithm.TwoPointers

Methods

toURepr :: Window a -> (Int, Int, a)

fromURepr :: (Int, Int, a) -> Window a

newtype MVector s (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

newtype MVector s (Window a) = MV_Window (MVector s (Int, Int, a))
type Rep (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

type Rep (Window a) = D1 ('MetaData "Window" "Algorithm.TwoPointers" "iota-0.1.0.0-K57kM7oGwkoB362Pk0qRM8" 'False) (C1 ('MetaCons "Window" 'PrefixI 'True) (S1 ('MetaSel ('Just "leftW") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "rightW") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "contextW") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))))
newtype Vector (Window a) Source # 
Instance details

Defined in Algorithm.TwoPointers

newtype Vector (Window a) = V_Window (Vector (Int, Int, a))

enumerateTwoPointers Source #

Arguments

:: Monad m 
=> Int

size

-> (Window a -> m a)

shrinkL (l < r)

-> (Window a -> m (Maybe a))

tryExtendR (l <= r)

-> a

context for the empty

-> m Int 

maxLengthTwoPointers Source #

Arguments

:: Monad m 
=> Int

size

-> (Window a -> m a)

shrinkL (l < r)

-> (Window a -> m (Maybe a))

tryExtendR (l <= r)

-> a

context for the empty

-> m Int 

runTwoPointersStream Source #

Arguments

:: Monad m 
=> Int

start

-> Int

end

-> (Window a -> m a)

shrinkL (l < r)

-> (Window a -> m (Maybe a))

tryExtendR (l <= r)

-> a 
-> Stream m (Window a)

context for the empty

runTwoPointersM Source #

Arguments

:: (PrimMonad m, Vector v (Window a)) 
=> Int

start

-> Int

end

-> (Window a -> m a)

shrinkL (l < r)

-> (Window a -> m (Maybe a))

tryExtendR (l <= r)

-> a 
-> m (v (Window a))

context for the empty

runTwoPointers Source #

Arguments

:: Vector v (Window a) 
=> Int

start

-> Int

end

-> (Window a -> a)

shrinkL (l < r)

-> (Window a -> Maybe a)

tryExtendR (l <= r)

-> a

context for the empty

-> v (Window a)