- let (venv_ty, venv, bind_venv) = mkVectEnv tys vs
- (lenv, bind_lenv) <- mkLiftEnv (Var lv) tys ls
- lenv_ty <- mkPArrayType venv_ty
-
- venv_bndr <- newLocalVar FSLIT("env") venv_ty
- lenv_bndr <- newLocalVar FSLIT("env") lenv_ty
-
- let mono_vfn = mkLams [venv_bndr, varg]
- . bind_venv (Var venv_bndr)
- $ vbody `mkVarApps` vs `mkVarApps` [varg]
- mono_lfn = mkLams [lenv_bndr, larg]
- . bind_lenv (Var lenv_bndr) lv
- $ lbody `mkVarApps` (lv:ls) `mkVarApps` [larg]
+ (env_ty, env, bind) <- buildEnv lv vars
+ env_bndr <- newLocalVVar FSLIT("env") env_ty