- data A s a = A !Rope a
- type Ann a f = A a (f a)
- class Annotation f where
- type :~> f g = forall a. f a -> g a
- null :: A s a -> Bool
- head :: Unpackable t => A s a -> t
- last :: Unpackable t => A s a -> t
- unpack :: Unpackable t => A s a -> [t]
- uncons :: (Annotation f, Unpackable t) => Ann a f -> Maybe (t, Ann (Tail t a) f)
- unsnoc :: (Annotation f, Unpackable t) => Ann a f -> Maybe (Ann (Init a t) f, t)
- drop :: Annotation f => Int -> Ann a f -> (forall n. Ann (Drop n a) f -> r) -> r
- take :: Annotation f => Int -> Ann a f -> (forall n. Ann (Take n a) f -> r) -> r
- splitAt :: Annotation f => Int -> Ann a f -> (forall n. Ann (Take n a) f -> Ann (Drop n a) f -> r) -> r
- unit :: (Reducer t Rope, Annotation f) => t -> Ann a f
- snoc :: (Annotation f, Reducer t Rope) => Ann a f -> t -> (forall c. Ann (Snoc c t a) f -> r) -> r
- cons :: (Annotation f, Reducer t Rope) => t -> Ann a f -> (forall c. Ann (Cons c t a) f -> r) -> r
- empty :: Annotation f => Ann Empty f
- append :: Annotation f => Ann a f -> Ann b f -> Ann (a :<> b) f
- break :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Take n a) f -> Ann (Drop n a) f -> r) -> r
- span :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Take n a) f -> Ann (Drop n a) f -> r) -> r
- takeWhile :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Take n a) f -> r) -> r
- dropWhile :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Drop n a) f -> r) -> r
- data Drop n a
- data Take n a
- data Snoc a s t
- data Cons s t a
- data Tail t a
- data Init a t
- data Empty
- data a :<> b
- data (f :*: g) a = (f a) :*: (g a)
- fstF :: (f :*: g) :~> f
- sndF :: (f :*: g) :~> g
Documentation
class Annotation f whereSource
splitAtA :: Int -> Rope -> f a -> (f b, f c)Source
takeA :: Int -> Rope -> f a -> f bSource
dropA :: Int -> Rope -> f a -> f bSource
snocA :: Rope -> Int -> f a -> f bSource
(Annotation f, Annotation g) => Annotation (:*: f g) |
Unpackable Ropes
head :: Unpackable t => A s a -> tSource
last :: Unpackable t => A s a -> tSource
unpack :: Unpackable t => A s a -> [t]Source
uncons :: (Annotation f, Unpackable t) => Ann a f -> Maybe (t, Ann (Tail t a) f)Source
unsnoc :: (Annotation f, Unpackable t) => Ann a f -> Maybe (Ann (Init a t) f, t)Source
Splitting Ropes
splitAt :: Annotation f => Int -> Ann a f -> (forall n. Ann (Take n a) f -> Ann (Drop n a) f -> r) -> rSource
Building Ropes
snoc :: (Annotation f, Reducer t Rope) => Ann a f -> t -> (forall c. Ann (Snoc c t a) f -> r) -> rSource
cons :: (Annotation f, Reducer t Rope) => t -> Ann a f -> (forall c. Ann (Cons c t a) f -> r) -> rSource
empty :: Annotation f => Ann Empty fSource
Breaking Ropes
break :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Take n a) f -> Ann (Drop n a) f -> r) -> rSource
span :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Take n a) f -> Ann (Drop n a) f -> r) -> rSource
takeWhile :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Take n a) f -> r) -> rSource
dropWhile :: (Annotation f, Breakable t) => (t -> Bool) -> Ann a f -> (forall n. Ann (Drop n a) f -> r) -> rSource
Type-level constructors
Annotation Products
(f a) :*: (g a) |
(Functor f, Functor g) => Functor (:*: f g) | |
(Applicative f, Applicative g) => Applicative (:*: f g) | |
(Foldable f, Foldable g) => Foldable (:*: f g) | |
(Traversable f, Traversable g) => Traversable (:*: f g) | |
(Annotation f, Annotation g) => Annotation (:*: f g) |