@@ -86,13 +86,11 @@ constrain env (L span expr) tipe =
8686 and . (:) ce <$> mapM branch branches
8787
8888 Data name exprs ->
89− do pairs <- mapM pair exprs
89+ do vars <- forM exprs $ \_ -> var Flexible
90+ let pairs = zip exprs (map VarN vars)
9091 (ctipe, cs) <- Monad.foldM step (tipe,true) (reverse pairs)
91− return (cs /\ name <? ctipe)
92+ return $ ex vars (cs /\ name <? ctipe)
9293 where
93− pair e = do v <- var Flexible -- needs an ex
94− return (e, VarN v)
95−
9694 step (t,c) (e,x) = do
9795 c' <- constrain env e x
9896 return (x ==> t, c /\ c')