Safe Haskell | None |
---|---|

Language | Haskell98 |

- 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 @