unison-util-rope-0.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Unison.Util.Rope

Synopsis

Documentation

chunks :: Rope a -> [a] Source #

singleton :: Sized a => a -> Rope a Source #

one :: Sized a => a -> Rope a Source #

map :: Sized b => (a -> b) -> Rope a -> Rope b Source #

traverse :: (Applicative f, Sized b) => (a -> f b) -> Rope a -> f (Rope b) Source #

null :: Sized a => Rope a -> Bool Source #

flatten :: Monoid a => Rope a -> a Source #

two :: Sized a => Rope a -> Rope a -> Rope a Source #

cons :: (Sized a, Semigroup a) => a -> Rope a -> Rope a Source #

uncons :: Sized a => Rope a -> Maybe (a, Rope a) Source #

snoc :: (Sized a, Semigroup a) => Rope a -> a -> Rope a Source #

unsnoc :: Sized a => Rope a -> Maybe (Rope a, a) Source #

index :: (Sized a, Index a ch) => Int -> Rope a -> Maybe ch Source #

class Sized a where Source #

Methods

size :: a -> Int Source #

Instances

Instances details
Sized a => Sized (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

size :: Rope a -> Int Source #

class Take a where Source #

Methods

take :: Int -> a -> a Source #

Instances

Instances details
(Sized a, Semigroup a, Take a) => Take (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

take :: Int -> Rope a -> Rope a Source #

class Drop a where Source #

Methods

drop :: Int -> a -> a Source #

Instances

Instances details
(Sized a, Semigroup a, Drop a) => Drop (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

drop :: Int -> Rope a -> Rope a Source #

class Reverse a where Source #

Methods

reverse :: a -> a Source #

Instances

Instances details
Reverse a => Reverse (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

reverse :: Rope a -> Rope a Source #

class Index a elem where Source #

Methods

unsafeIndex :: Int -> a -> elem Source #

Instances

Instances details
(Sized a, Index a ch) => Index (Rope a) ch Source # 
Instance details

Defined in Unison.Util.Rope

Methods

unsafeIndex :: Int -> Rope a -> ch Source #

data Rope a Source #

Roughly size-balanced binary tree of chunks. There are a few operations that are sloppier about rebalancing as long as that can't lead to trees of more than logarithmic depth.

The Int in the Two constructor is a cached size of that subtree.

Instances

Instances details
Foldable Rope Source # 
Instance details

Defined in Unison.Util.Rope

Methods

fold :: Monoid m => Rope m -> m #

foldMap :: Monoid m => (a -> m) -> Rope a -> m #

foldMap' :: Monoid m => (a -> m) -> Rope a -> m #

foldr :: (a -> b -> b) -> b -> Rope a -> b #

foldr' :: (a -> b -> b) -> b -> Rope a -> b #

foldl :: (b -> a -> b) -> b -> Rope a -> b #

foldl' :: (b -> a -> b) -> b -> Rope a -> b #

foldr1 :: (a -> a -> a) -> Rope a -> a #

foldl1 :: (a -> a -> a) -> Rope a -> a #

toList :: Rope a -> [a] #

null :: Rope a -> Bool #

length :: Rope a -> Int #

elem :: Eq a => a -> Rope a -> Bool #

maximum :: Ord a => Rope a -> a #

minimum :: Ord a => Rope a -> a #

sum :: Num a => Rope a -> a #

product :: Num a => Rope a -> a #

(Sized a, Semigroup a) => Monoid (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

mempty :: Rope a #

mappend :: Rope a -> Rope a -> Rope a #

mconcat :: [Rope a] -> Rope a #

(Sized a, Semigroup a) => Semigroup (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

(<>) :: Rope a -> Rope a -> Rope a #

sconcat :: NonEmpty (Rope a) -> Rope a #

stimes :: Integral b => b -> Rope a -> Rope a #

NFData a => NFData (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

rnf :: Rope a -> () #

(Sized a, Take a, Drop a, Eq a) => Eq (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

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

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

(Sized a, Take a, Drop a, Ord a) => Ord (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

compare :: Rope a -> Rope a -> Ordering #

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

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

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

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

max :: Rope a -> Rope a -> Rope a #

min :: Rope a -> Rope a -> Rope a #

(Sized a, Semigroup a, Drop a) => Drop (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

drop :: Int -> Rope a -> Rope a Source #

Reverse a => Reverse (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

reverse :: Rope a -> Rope a Source #

Sized a => Sized (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

size :: Rope a -> Int Source #

(Sized a, Semigroup a, Take a) => Take (Rope a) Source # 
Instance details

Defined in Unison.Util.Rope

Methods

take :: Int -> Rope a -> Rope a Source #

(Sized a, Index a ch) => Index (Rope a) ch Source # 
Instance details

Defined in Unison.Util.Rope

Methods

unsafeIndex :: Int -> Rope a -> ch Source #