mkClosureApp
) where
-#include "HsVersions.h"
-
import VectCore
import VectMonad
go ty k | Just k' <- kindView k = go ty k'
go ty (FunTy k1 k2)
= do
- tv <- newTyVar FSLIT("a") k1
+ tv <- newTyVar (fsLit "a") k1
mty1 <- go (TyVarTy tv) k1
case mty1 of
Just ty1 -> do
mk_dict_var tv = do
r <- paDictArgType tv
case r of
- Just ty -> liftM Just (newLocalVar FSLIT("dPA") ty)
+ Just ty -> liftM Just (newLocalVar (fsLit "dPA") ty)
Nothing -> return Nothing
mk_lams mdicts = mkLams (tvs ++ [dict | Just dict <- mdicts])
buildClosures tvs vars (arg_ty : arg_tys) res_ty mk_body
= do
res_ty' <- mkClosureTypes arg_tys res_ty
- arg <- newLocalVVar FSLIT("x") arg_ty
+ arg <- newLocalVVar (fsLit "x") arg_ty
buildClosure tvs vars arg_ty res_ty'
. hoistPolyVExpr tvs
$ do
buildClosure tvs vars arg_ty res_ty mk_body
= do
(env_ty, env, bind) <- buildEnv vars
- env_bndr <- newLocalVVar FSLIT("env") env_ty
- arg_bndr <- newLocalVVar FSLIT("arg") arg_ty
+ env_bndr <- newLocalVVar (fsLit "env") env_ty
+ arg_bndr <- newLocalVVar (fsLit "arg") arg_ty
fn <- hoistPolyVExpr tvs
$ do
return (vbody', lbody'))
where
(vs,ls) = unzip vvs
- tys = map idType vs
+ tys = map varType vs
mkVectEnv :: [Type] -> [Var] -> (Type, CoreExpr, CoreExpr -> CoreExpr -> CoreExpr)
mkVectEnv [] [] = (unitTy, Var unitDataConId, \_ body -> body)