Safe Haskell | None |
---|
- buildPADict :: TyCon -> CoAxiom Unbranched -> TyCon -> TyCon -> SumRepr -> VM Var
Documentation
:: TyCon | tycon of the type being vectorised. |
-> CoAxiom Unbranched | Coercion between the type and its vectorised representation. |
-> TyCon | PData instance tycon |
-> TyCon | PDatas instance tycon |
-> SumRepr | representation used for the type being vectorised. |
-> VM Var | name of the top-level dictionary function. |
Build the PA dictionary function for some type and hoist it to top level.
The PA dictionary holds fns that convert values to and from their vectorised representations.
Recall the definition: class PR (PRepr a) => PA a where toPRepr :: a -> PRepr a fromPRepr :: PRepr a -> a toArrPRepr :: PData a -> PData (PRepr a) fromArrPRepr :: PData (PRepr a) -> PData a toArrPReprs :: PDatas a -> PDatas (PRepr a) fromArrPReprs :: PDatas (PRepr a) -> PDatas a Example: df :: forall a. PR (PRepr a) -> PA a -> PA (T a) df = /a. (c:PR (PRepr a)) (d:PA a). MkPA c ($PR_df a d) ($toPRepr a d) ... $dPR_df :: forall a. PA a -> PR (PRepr (T a)) $dPR_df = .... $toRepr :: forall a. PA a -> T a -> PRepr (T a) $toPRepr = ... The ... stuff is filled in by buildPAScAndMethods