collectAnnTypeBinders, collectAnnTypeArgs, isAnnTypeArg,
splitClosureTy,
mkPADictType, mkPArrayType,
- paDictArgType, paDictOfType
+ paDictArgType, paDictOfType,
+ lookupPArrayFamInst,
+ hoistExpr
) where
#include "HsVersions.h"
import VectMonad
import CoreSyn
+import CoreUtils
import Type
import TypeRep
import TyCon
import PrelNames
import Outputable
+import FastString
import Control.Monad ( liftM )
dicts <- mapM paDictOfType tys
return $ mkApps (mkTyApps dfun tys) dicts
+lookupPArrayFamInst :: Type -> VM (TyCon, [Type])
+lookupPArrayFamInst ty = builtin parrayTyCon >>= (`lookupFamInst` [ty])
+
+hoistExpr :: FastString -> CoreExpr -> VM Var
+hoistExpr fs expr
+ = do
+ var <- newLocalVar fs (exprType expr)
+ updLEnv $ \env ->
+ env { local_bindings = (var, expr) : local_bindings env }
+ return var
+