module Pandora.Pattern.Functor.Representable where
import Pandora.Core.Functor (type (<:=))
import Pandora.Pattern.Functor.Pointable (Pointable)
class Pointable t => Representable t where
{-# MINIMAL (<#>), tabulate #-}
type Representation t :: *
(<#>) :: Representation t -> a <:= t
tabulate :: (Representation t -> a) -> t a
index :: t a -> Representation t -> a
index t a
x Representation t
r = Representation t
r Representation t -> a <:= t
forall (t :: * -> *) a.
Representable t =>
Representation t -> a <:= t
<#> t a
x