rope-0.6: Tools for manipulating fingertrees of bytestrings with optional annotations

Data.Rope.Annotated

Contents

Synopsis

Annotated Ropes

data Branded brand t a Source

type Ann f s = (s `Branded` Rope) (f s)Source

runAnn :: Ann f a -> (forall b. Ann f b -> r) -> rSource

Unpacking Ropes

unpack :: Unpackable t => Branded s Rope a -> [t]Source

Building Annotated Rope

append :: MonoidalAnn f => Ann f a -> Ann f b -> Ann f (a :<> b)Source

pack :: (PackableAnn f, Packable t) => t -> (forall a. Ann f (Return a) -> r) -> rSource

snoc :: (PackableAnn f, Packable t) => Ann f a -> t -> (forall c. Ann f (Snoc a c t) -> r) -> rSource

cons :: (PackableAnn f, Packable t) => t -> Ann f a -> (forall c. Ann f (Cons c t a) -> r) -> rSource

Cutting An Annotated Rope

splitAt :: BreakableAnn f => Int -> Ann f a -> (forall n. Ann f (Take n a) -> Ann f (Drop n a) -> r) -> rSource

drop :: BreakableAnn f => Int -> Ann f a -> (forall n. Ann f (Drop n a) -> r) -> rSource

take :: BreakableAnn f => Int -> Ann f a -> (forall n. Ann f (Take n a) -> r) -> rSource

break :: (BreakableAnn f, Breakable t) => (t -> Bool) -> Ann f a -> (forall n. Ann f (Take n a) -> Ann f (Drop n a) -> r) -> rSource

span :: (BreakableAnn f, Breakable t) => (t -> Bool) -> Ann f a -> (forall n. Ann f (Take n a) -> Ann f (Drop n a) -> r) -> rSource

takeWhile :: (BreakableAnn f, Breakable t) => (t -> Bool) -> Ann f a -> (forall n. Ann f (Take n a) -> r) -> rSource

dropWhile :: (BreakableAnn f, Breakable t) => (t -> Bool) -> Ann f a -> (forall n. Ann f (Drop n a) -> r) -> rSource

Inspecting the ends of the Rope

uncons :: (BreakableAnn f, Unpackable t) => Ann f a -> Maybe (t, Ann f (Tail t a))Source

unsnoc :: (BreakableAnn f, Unpackable t) => Ann f a -> Maybe (Ann f (Init a t), t)Source

Type-level constructors

type family Drop n a :: *Source

type family Take n a :: *Source

type Snoc a s t = a :<> Return (Token s t)Source

type Cons s t a = Token s t :> aSource

type Tail t a = Return (Tailed t a)Source

type Init a t = Return (Inited a t)Source

type Return a = a :> NilSource

type family a :<> b :: *Source

data Tailed t a Source

data Inited a t Source

data Dropped n a Source

data Taken n a Source

data Nil Source

data a :> b Source

Annotations

Annotation Product

data (f :*: g) a Source

A Rope Annotation product.

Constructors

(f a) :*: (g a) 

Instances

fstF :: (f :*: g) a -> f aSource

sndF :: (f :*: g) a -> g aSource

Annotation Unit