<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Vectorise.Generic.PADict</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ window.onload = function () {pageLoad();setSynopsis("mini_Vectorise-Generic-PADict.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Vectorise.Generic.PADict</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:buildPADict">buildPADict</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -> <a href="TyCon.html#t:TyCon">TyCon</a> -> <a href="TyCon.html#t:TyCon">TyCon</a> -> <a href="TyCon.html#t:TyCon">TyCon</a> -> <a href="Vectorise-Generic-Description.html#t:SumRepr">SumRepr</a> -> <a href="Vectorise-Monad-Base.html#t:VM">VM</a> <a href="Var.html#t:Var">Var</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:buildPADict" class="def">buildPADict</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="TyCon.html#t:TyCon">TyCon</a></td><td class="doc"><p>tycon of the type being vectorised. </p></td></tr><tr><td class="src">-> <a href="TyCon.html#t:TyCon">TyCon</a></td><td class="doc"><p>tycon of the type used for the vectorised representation. </p></td></tr><tr><td class="src">-> <a href="TyCon.html#t:TyCon">TyCon</a></td><td class="doc"><p>PData instance tycon </p></td></tr><tr><td class="src">-> <a href="TyCon.html#t:TyCon">TyCon</a></td><td class="doc"><p>PDatas instance tycon </p></td></tr><tr><td class="src">-> <a href="Vectorise-Generic-Description.html#t:SumRepr">SumRepr</a></td><td class="doc"><p>representation used for the type being vectorised. </p></td></tr><tr><td class="src">-> <a href="Vectorise-Monad-Base.html#t:VM">VM</a> <a href="Var.html#t:Var">Var</a></td><td class="doc"><p>name of the top-level dictionary function. </p></td></tr></table></div><div class="doc"><p>Build the PA dictionary function for some type and hoist it to top level. </p><p>The PA dictionary holds fns that convert values to and from their vectorised representations. </p><pre>Recall the definition: class 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 Example: df :: forall a. PA a -> PA (T a) df = /a. (d:PA a). MkPA ($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 <a href="---.html">...</a> stuff is filled in by buildPAScAndMethods </pre></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>