Safe Haskell | None |
---|---|
Language | Haskell98 |
- type Path phi t i = Ctxs phi t (K0 ()) i
- type Dir f t i = Ctx f t (K0 ()) i
- data WithRef phi top r a
- type HWithRef phi top t = HFix (WithRef phi top) t
- data Insert phi top ix where
- (<.>) :: forall phi a b c. Path phi b a -> Path phi c b -> Path phi c a
- newtype ConIndex = CI Int
- class ShowPath f where
- showsPrecPathC :: ShowPath (PF phi) => ConIndex -> Int -> Path phi t i -> ShowS
- showWR :: forall phi top ix. (HFunctor phi (PF phi), HShow phi (PF phi), ShowPath (PF phi)) => phi ix -> Int -> HWithRef phi top ix -> ShowS
- mapP :: forall m phi i t. (Monad m, Fam phi, MapP phi (PF phi)) => phi i -> Path phi t i -> (phi t -> t -> m t) -> i -> m i
- class MapP phi f where
- mapPR :: forall phi top t a. (Fam phi, MapP phi (PF phi)) => phi a -> Path phi t a -> (phi t -> HWithRef phi top t -> Maybe (HWithRef phi top t)) -> HWithRef phi top a -> Maybe (HWithRef phi top a)
- mapMwithI :: (Monad m, Traversable t) => (Int -> a -> m b) -> t a -> m (t b)
- data Ctxs :: (* -> *) -> * -> (* -> *) -> * -> * where
- data family Ctx f :: * -> (* -> *) -> * -> *
Documentation
type Path phi t i = Ctxs phi t (K0 ()) i Source
A path is a list of connecting directions on a datatype. This is equivalent to a zipper context where the recursive positions are ignored (set to a constant type).
type Dir f t i = Ctx f t (K0 ()) i Source
A direction points to a single recursive position in a datatype.
ShowPath U | |
ShowPath (I ix) | |
ShowPath (K a) | |
(ShowPath f, ShowPath g) => ShowPath ((:+:) f g) | |
(ShowPath f, ShowPath g, CountIs f) => ShowPath ((:*:) f g) | |
ShowPath f => ShowPath ((:>:) f ix) | |
ShowPath f => ShowPath ((:.:) [] f) | |
ShowPath f => ShowPath ((:.:) Maybe f) | |
(ShowPath f, Constructor c) => ShowPath (C c f) |
showWR :: forall phi top ix. (HFunctor phi (PF phi), HShow phi (PF phi), ShowPath (PF phi)) => phi ix -> Int -> HWithRef phi top ix -> ShowS Source
mapP :: forall m phi i t. (Monad m, Fam phi, MapP phi (PF phi)) => phi i -> Path phi t i -> (phi t -> t -> m t) -> i -> m i Source
mapPR :: forall phi top t a. (Fam phi, MapP phi (PF phi)) => phi a -> Path phi t a -> (phi t -> HWithRef phi top t -> Maybe (HWithRef phi top t)) -> HWithRef phi top a -> Maybe (HWithRef phi top a) Source
mapMwithI :: (Monad m, Traversable t) => (Int -> a -> m b) -> t a -> m (t b) Source
data family Ctx f :: * -> (* -> *) -> * -> * Source
Abstract type of context frames. Not required for the high-level navigation functions.
Zipper phi f => HFunctor phi (Ctx f b) | |
data Ctx U | |
data Ctx (I xi) where | |
data Ctx (K a) | |
data Ctx ((:+:) f g) | |
data Ctx ((:*:) f g) | |
data Ctx ((:>:) f xi) where | |
data Ctx ((:.:) [] g) = CCL [g r ix] (Ctx g b r ix) [g r ix] | |
data Ctx ((:.:) Maybe g) = CCM (Ctx g b r ix) | |
data Ctx (C c f) = CC (Ctx f b r ix) |