+vectExpr lc (_, AnnCase expr bndr ty alts)
+ = panic "vectExpr: case"
+vectExpr lc (_, AnnLet (AnnNonRec bndr rhs) body)
+ = do
+ (vrhs, lrhs) <- vectExpr lc rhs
+ (vbndr, lbndr, (vbody, lbody)) <- vectBndrIn bndr (vectExpr lc body)
+ return (Let (NonRec vbndr vrhs) vbody,
+ Let (NonRec lbndr lrhs) lbody)
+vectExpr lc (_, AnnLet (AnnRec prs) body)
+ = do
+ (vbndrs, lbndrs, (vrhss, vbody, lrhss, lbody)) <- vectBndrsIn bndrs vect
+ return (Let (Rec (zip vbndrs vrhss)) vbody,
+ Let (Rec (zip lbndrs lrhss)) lbody)
+ where
+ (bndrs, rhss) = unzip prs
+
+ vect = do
+ (vrhss, lrhss) <- mapAndUnzipM (vectExpr lc) rhss
+ (vbody, lbody) <- vectExpr lc body
+ return (vrhss, vbody, lrhss, lbody)