From 5ee960ed7ccc213f13e7e667225ab0ebe27abd39 Mon Sep 17 00:00:00 2001 From: krangelov Date: Thu, 14 Oct 2021 10:24:20 +0200 Subject: [PATCH] fix the evaluation for Prod --- src/compiler/GF/Compile/Compute/Concrete.hs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/compiler/GF/Compile/Compute/Concrete.hs b/src/compiler/GF/Compile/Compute/Concrete.hs index b4ac4dd82..2d359c2ca 100644 --- a/src/compiler/GF/Compile/Compute/Concrete.hs +++ b/src/compiler/GF/Compile/Compute/Concrete.hs @@ -352,12 +352,16 @@ value2term i (VClosure env (Abs b x t)) = do v <- eval ((x,tnk):env) t [] t <- value2term (i+1) v return (Abs b (identS ('v':show i)) t) -value2term i (VProd b x v1 env t2) = do - t1 <- value2term i v1 - tnk <- newGen i - v2 <- eval ((x,tnk):env) t2 [] - t2 <- value2term (i+1) v2 - return (Prod b x t1 t2) +value2term i (VProd b x v1 env t2) + | x == identW = do t1 <- value2term i v1 + v2 <- eval env t2 [] + t2 <- value2term i v2 + return (Prod b x t1 t2) + | otherwise = do t1 <- value2term i v1 + tnk <- newGen i + v2 <- eval ((x,tnk):env) t2 [] + t2 <- value2term (i+1) v2 + return (Prod b (identS ('v':show i)) t1 t2) value2term i (VRecType lbls) = do lbls <- mapM (\(lbl,v) -> fmap ((,) lbl) (value2term i v)) lbls return (RecType lbls)