indexed-paths-0.1.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Path.Class

Synopsis

Documentation

data Uncons (p :: (k -> k -> *) -> k -> k -> *) (l :: k -> k -> *) (a :: k) :: k -> * where #

Constructors

UnconsSome :: l a b -> p l b c -> Uncons p l a c 
UnconsEmpty :: Uncons p l a a 

data Unsnoc (p :: (k -> k -> *) -> k -> k -> *) (l :: k -> k -> *) (a :: k) :: k -> * where #

Constructors

UnsnocSome :: p l a b -> l b c -> Unsnoc p l a c 
UnsnocEmpty :: Unsnoc p l a a 

data SplitAt (p :: (k -> k -> *) -> k -> k -> *) (l :: k -> k -> *) (a :: k) :: k -> * where #

Constructors

SplitAt :: p l a b -> p l b c -> SplitAt p l a c 

class (forall l. Category (p l)) => IsPath (p :: (k -> k -> *) -> k -> k -> *) where #

Laws:

uncons (cons a b) = UnconsSome a b

unsnoc (snoc a b) = UnsnocSome a b

cons a empty = singleton = snoc empty a

composeR cons p empty = p

composeL snoc empty p = p

splitAt n xs = SplitAt a b ==> append a b = xs

Minimal complete definition

cons, uncons

Methods

cons :: l a b -> p l b c -> p l a c #

uncons :: p l a b -> Uncons p l a b #

composeR :: (forall x y z. l x y -> r y z -> r x z) -> p l a b -> r b c -> r a c #

composeL :: (forall x y z. r x y -> l y z -> r x z) -> r a b -> p l b c -> r a c #

composeMap :: Category c => (forall x y. l x y -> c x y) -> p l a b -> c a b #

singleton :: l a b -> p l a b #

snoc :: p l a b -> l b c -> p l a c #

unsnoc :: p l a b -> Unsnoc p l a b #

splitAt :: Int -> p l a b -> SplitAt p l a b #

Instances

Instances details
IsPath (Path :: (k -> k -> Type) -> k -> k -> Type) # 
Instance details

Defined in Data.Path.List

Methods

cons :: forall l (a :: k0) (b :: k0) (c :: k0). l a b -> Path l b c -> Path l a c #

uncons :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Uncons Path l a b #

composeR :: forall k0 l r (a :: k1) (b :: k1) (c :: k0). (forall (x :: k1) (y :: k1) (z :: k0). l x y -> r y z -> r x z) -> Path l a b -> r b c -> r a c #

composeL :: forall k0 r l (a :: k0) (b :: k1) (c :: k1). (forall (x :: k0) (y :: k1) (z :: k1). r x y -> l y z -> r x z) -> r a b -> Path l b c -> r a c #

composeMap :: forall c l (a :: k0) (b :: k0). Category c => (forall (x :: k0) (y :: k0). l x y -> c x y) -> Path l a b -> c a b #

singleton :: forall l (a :: k0) (b :: k0). l a b -> Path l a b #

snoc :: forall l (a :: k0) (b :: k0) (c :: k0). Path l a b -> l b c -> Path l a c #

unsnoc :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Unsnoc Path l a b #

splitAt :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Int -> Path l a b -> SplitAt Path l a b #

IsPath (Path :: (k -> k -> Type) -> k -> k -> Type) # 
Instance details

Defined in Data.Path.DList

Methods

cons :: forall l (a :: k0) (b :: k0) (c :: k0). l a b -> Path l b c -> Path l a c #

uncons :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Uncons Path l a b #

composeR :: forall k0 l r (a :: k1) (b :: k1) (c :: k0). (forall (x :: k1) (y :: k1) (z :: k0). l x y -> r y z -> r x z) -> Path l a b -> r b c -> r a c #

composeL :: forall k0 r l (a :: k0) (b :: k1) (c :: k1). (forall (x :: k0) (y :: k1) (z :: k1). r x y -> l y z -> r x z) -> r a b -> Path l b c -> r a c #

composeMap :: forall c l (a :: k0) (b :: k0). Category c => (forall (x :: k0) (y :: k0). l x y -> c x y) -> Path l a b -> c a b #

singleton :: forall l (a :: k0) (b :: k0). l a b -> Path l a b #

snoc :: forall l (a :: k0) (b :: k0) (c :: k0). Path l a b -> l b c -> Path l a c #

unsnoc :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Unsnoc Path l a b #

splitAt :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Int -> Path l a b -> SplitAt Path l a b #

IsPath (Path :: (k -> k -> Type) -> k -> k -> Type) # 
Instance details

Defined in Data.Path.Sequence

Methods

cons :: forall l (a :: k0) (b :: k0) (c :: k0). l a b -> Path l b c -> Path l a c #

uncons :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Uncons Path l a b #

composeR :: forall k0 l r (a :: k1) (b :: k1) (c :: k0). (forall (x :: k1) (y :: k1) (z :: k0). l x y -> r y z -> r x z) -> Path l a b -> r b c -> r a c #

composeL :: forall k0 r l (a :: k0) (b :: k1) (c :: k1). (forall (x :: k0) (y :: k1) (z :: k1). r x y -> l y z -> r x z) -> r a b -> Path l b c -> r a c #

composeMap :: forall c l (a :: k0) (b :: k0). Category c => (forall (x :: k0) (y :: k0). l x y -> c x y) -> Path l a b -> c a b #

singleton :: forall l (a :: k0) (b :: k0). l a b -> Path l a b #

snoc :: forall l (a :: k0) (b :: k0) (c :: k0). Path l a b -> l b c -> Path l a c #

unsnoc :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Unsnoc Path l a b #

splitAt :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Int -> Path l a b -> SplitAt Path l a b #

IsPath (Path :: (k -> k -> Type) -> k -> k -> Type) # 
Instance details

Defined in Data.Path.Vector

Methods

cons :: forall l (a :: k0) (b :: k0) (c :: k0). l a b -> Path l b c -> Path l a c #

uncons :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Uncons Path l a b #

composeR :: forall k0 l r (a :: k1) (b :: k1) (c :: k0). (forall (x :: k1) (y :: k1) (z :: k0). l x y -> r y z -> r x z) -> Path l a b -> r b c -> r a c #

composeL :: forall k0 r l (a :: k0) (b :: k1) (c :: k1). (forall (x :: k0) (y :: k1) (z :: k1). r x y -> l y z -> r x z) -> r a b -> Path l b c -> r a c #

composeMap :: forall c l (a :: k0) (b :: k0). Category c => (forall (x :: k0) (y :: k0). l x y -> c x y) -> Path l a b -> c a b #

singleton :: forall l (a :: k0) (b :: k0). l a b -> Path l a b #

snoc :: forall l (a :: k0) (b :: k0) (c :: k0). Path l a b -> l b c -> Path l a c #

unsnoc :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Path l a b -> Unsnoc Path l a b #

splitAt :: forall (l :: k0 -> k0 -> Type) (a :: k0) (b :: k0). Int -> Path l a b -> SplitAt Path l a b #

empty :: IsPath p => p l a a #

append :: IsPath p => p l a b -> p l b c -> p l a c #

compose :: (IsPath p, Category l) => p l a b -> l a b #

compose . singleton = id