Idris2Doc : Nested

Nested

(source)

Definitions

NaturalTransformation : (k->Type) -> (k->Type) ->Type
  This serves as our higher-order "function" from `a` to `b`.

Visibility: public export
Algebra : ((k->Type) ->k->Type) -> (k->Type) ->Type
  Higher-order version of an "f-algebra" (i.e. `f a -> a`)

Visibility: public export
Coalgebra : ((k->Type) ->k->Type) -> (k->Type) ->Type
  Higher-order version of an "f-co-algebra" (i.e. `a -> f a`)

Visibility: public export
HFunctor : ((k1->Type) ->k2->Type) ->Type
  Type of an higher-order mapping, a functor over type indexes.

Visibility: public export
recordNested : (k->Type) -> ((k->Type) ->k->Type) ->Type
  Serves as a proof that an indexed type (e.g.), `t`, is formed through nested
(a.k.a. non-uniform) layers of the higher-order functor, `f`.

Totality: total
Visibility: public export
Constructor: 
MkNested : HFunctorf->Coalgebraft->Algebraft->Nestedtf

Projections:
.embed : Nestedtf->Algebraft
.hfunctor : Nestedtf->HFunctorf
.project : Nestedtf->Coalgebraft
.hfunctor : Nestedtf->HFunctorf
Visibility: public export
hfunctor : Nestedtf->HFunctorf
Visibility: public export
.project : Nestedtf->Coalgebraft
Visibility: public export
project : Nestedtf->Coalgebraft
Visibility: public export
.embed : Nestedtf->Algebraft
Visibility: public export
embed : Nestedtf->Algebraft
Visibility: public export
hfold : Nestedtf->Algebrafr->NaturalTransformationtr
  Reduce a realized nested value bottom-up to a output with the same index.

Visibility: export
hbuild : Nestedtf-> (Algebrafx->NaturalTransformationrx) ->NaturalTransformationrt
  Given an algebra-based transformation, prepare a transformation that acts
as if it were unfolding a nested value, without reifying the nested
structure. Effectively substituting a call to the algebra for any
constructors of `t`

Universal property (for all n, a, and ghf):
hfold n a . hbuild n ghf = ghf a

Visibility: export
hunfold : Nestedtf->Coalgebrafr->NaturalTransformationrt
  Build a nested value top-down to from a seed with the same index.

Visibility: export
hdestroy : Nestedtf-> (Coalgebrafx->NaturalTransformationxr) ->NaturalTransformationtr
  Universal property (for all n, ghu, and c):
hdestory n ghu . hunfold n c = ghu c

Visibility: export
hhylo : HFunctorf->Coalgebrafi->Algebrafo->NaturalTransformationio
  Build a transformation with a nested recursion pattern, roughly equivalent
to `hfold n a . hunfold n c`, but the nested type, `n`, is an implicit
fixed-point of `f`.

Visibility: export
Ran : (k->Type) -> (k->Type) ->Type->Type
  Polykinded right Kan extension of `g` along `f`

Visibility: public export
gfold : Nestedtf->Algebraf (Rancr) -> (i->co) ->ti->ro
  Index-changing fold via right Kan extension of the `r`esult functor along a
`c`arrier functor. A specialized version of `hfold` with some of the
arguments rearranged.

Visibility: export
recordLan : (k->Type) -> (k->Type) ->Type->Type
  Polykinded left Kan extension of `g` along `f`

Totality: total
Visibility: public export
Constructor: 
MkLan : (ftarget->a) ->gtarget->Lanfga

Projections:
.extract : ({rec:0} : Lanfga) ->f (target{rec:0}) ->a
.pool : ({rec:0} : Lanfga) ->g (target{rec:0})
.target : Lanfga->k
.target : Lanfga->k
Visibility: public export
target : Lanfga->k
Visibility: public export
.extract : ({rec:0} : Lanfga) ->f (target{rec:0}) ->a
Visibility: public export
extract : ({rec:0} : Lanfga) ->f (target{rec:0}) ->a
Visibility: public export
.pool : ({rec:0} : Lanfga) ->g (target{rec:0})
Visibility: public export
pool : ({rec:0} : Lanfga) ->g (target{rec:0})
Visibility: public export
gbuild : Nestedtf-> (Algebrafx->NaturalTransformation (Lancs) x) -> (ci->o) ->si->to
  Like `gunfold`, but apply the algebra instead of the constructors of `t`.

Visibility: export
gunfold : Nestedtf->Coalgebraf (Lancs) -> (ci->o) ->si->to
  Index-changing unfold via left Kan extension of the `s`eed functor along
a `c`arrier function. A specialized version of `hunfold` with the "Lan"
argument curried.

Visibility: export
gdestroy : Nestedtf-> (Coalgebrafx->NaturalTransformationx (Rancr)) -> (i->co) ->ti->ro
  Like `hdestroy` in the same way that `gfold` is like `hfold`.

Universal property:
(gdestroy n ghu f . gunfold n c g) x = ghu c (MkLan g x) f

Visibility: export
Codensity : (k->Type) ->Type->Type
  Codensity monad, the right Kan extension of a functor along itself

Visibility: public export
ffold : Nestedtf->Algebraf (Codensity (Consta)) ->ta->a
  Reduce to a single value of the index type.  A specialization of `gfold`.

Visibility: export
Density : (k->Type) ->Type->Type
  Density comonad, the left Kan extension of a functor along itself.

Visibility: public export
fbuild : Nestedtf-> (Algebrafx->NaturalTransformation (Density (Consta)) x) ->a->ta
  Like `funfold` in the same way `gbuild` is like `gunfold`.  Specialization
of `gbuild`.

Visibility: export
funfold : Nestedtf->Coalgebraf (Density (Consta)) ->a->ta
  Unfold from a single value, with the type of that value being the output
index. A specialization of `gunfold`.

Visibility: export
fdestroy : Nestedtf-> (Coalgebrafx->NaturalTransformationx (Codensity (Consta))) ->ta->a
  Like `ffold` in the same way `gdestroy` is like `gfold`.  Specialization of
`gdestroy`.

Visibility: export