module Vectorise.Utils.PRDict (
- prDFunOfTyCon,
prDictOfType,
- prDictOfTyApp,
- prDFunApply,
wrapPR
)
where
import Vectorise.Monad
import Vectorise.Builtins
+import Vectorise.Utils.Base
import Vectorise.Utils.PADict
import CoreSyn
import Type
import TypeRep
-import TyCon
-import Outputable
import Control.Monad
-prDFunOfTyCon :: TyCon -> VM CoreExpr
-prDFunOfTyCon tycon
- = liftM Var
- . maybeCantVectoriseM "No PR dictionary for tycon" (ppr tycon)
- $ lookupTyConPR tycon
-
-
-
prDictOfType :: Type -> VM CoreExpr
prDictOfType ty = prDictOfTyApp ty_fn ty_args
where
wrapPR :: Type -> VM CoreExpr
wrapPR ty
= do
- Just pa_dict <- paDictOfType ty
- pr_dfun <- prDFunOfTyCon =<< builtin wrapTyCon
+ pa_dict <- paDictOfType ty
+ pr_dfun <- prDFunOfTyCon =<< builtin wrapTyCon
return $ mkApps pr_dfun [Type ty, pa_dict]