aboutsummaryrefslogtreecommitdiff
path: root/src/Analysis/Identity.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Analysis/Identity.hs')
-rw-r--r--src/Analysis/Identity.hs18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/Analysis/Identity.hs b/src/Analysis/Identity.hs
index b3a6664..6301dc1 100644
--- a/src/Analysis/Identity.hs
+++ b/src/Analysis/Identity.hs
@@ -261,21 +261,17 @@ idana env expr = case expr of
res <- VIPair <$> (VIArr <$> genId <*> pure sh) <*> (VIArr <$> genId <*> pure sh')
pure (res, EFold1InnerD1 res cm e1' e2' e3')
- EFold1InnerD2 _ cm ef ez eplus ebog ed -> do
+ EFold1InnerD2 _ cm ef ebog ed -> do
let STArr _ tB = typeOf ebog
- t2 = typeOf ez
+ STArr _ t2 = typeOf ed
xf1 <- genIds t2
xf2 <- genIds tB
(_, e1') <- idana (xf1 `SCons` xf2 `SCons` env) ef
- (_, e2') <- idana env ez
- xp1 <- genIds t2
- xp2 <- genIds t2
- (_, e3') <- idana (xp1 `SCons` xp2 `SCons` env) eplus
- (v4, e4') <- idana env ebog
- (_, e5') <- idana env ed
- let VIArr _ sh = v4
- res <- VIPair <$> genIds t2 <*> (VIArr <$> genId <*> pure sh)
- pure (res, EFold1InnerD2 res cm e1' e2' e3' e4' e5')
+ (v2, e2') <- idana env ebog
+ (_, e3') <- idana env ed
+ let VIArr _ sh@(_ :< sh') = v2
+ res <- VIPair <$> (VIArr <$> genId <*> pure sh') <*> (VIArr <$> genId <*> pure sh)
+ pure (res, EFold1InnerD2 res cm e1' e2' e3')
EConst _ t val -> do
res <- VIScal <$> genId