Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
numbers with a shape
- class HasShape f where
- type Shape f
- class Distributive f => Representable (f :: * -> *) where
Documentation
class HasShape f where Source #
Not everything that has a shape is representable.
todo: Structure is a useful alternative concept/naming convention
Representable
Representable has most of what's needed to define numbers that have elements (aka scalars) and a fixed shape.
class Distributive f => Representable (f :: * -> *) where #
A Functor
f
is Representable
if tabulate
and index
witness an isomorphism to (->) x
.
Every Distributive
Functor
is actually Representable
.
Every Representable
Functor
from Hask to Hask is a right adjoint.
tabulate
.index
≡ idindex
.tabulate
≡ idtabulate
.return
≡return
Representable Par1 | |
Representable Complex | |
Representable Identity | |
Representable Dual | |
Representable Sum | |
Representable Product | |
Representable (U1 *) | |
Representable f => Representable (Co f) | |
Representable (Proxy *) | |
Representable f => Representable (Cofree f) | |
Representable f => Representable (Rec1 * f) | |
Representable w => Representable (TracedT s w) | |
Representable m => Representable (IdentityT * m) | |
Representable (Tagged * t) | |
Representable f => Representable (Reverse * f) | |
Representable f => Representable (Backwards * f) | |
Representable ((->) LiftedRep LiftedRep e) | |
(Representable f, Representable g) => Representable ((:*:) * f g) | |
(Representable f, Representable g) => Representable (Product * f g) | |
Representable m => Representable (ReaderT * e m) | |
(Dimensions r, Container c) => Representable (Array Nat c r) # | |
Representable f => Representable (M1 * i c f) | |
(Representable f, Representable g) => Representable ((:.:) * * f g) | |
(Representable f, Representable g) => Representable (Compose * * f g) | |