@@ -42,6 +42,7 @@ constrain env pattern tipe =
4242
4343 PData name patterns -> do
4444 (kind, cvars, ctipe) <- freshDataScheme env name
45+ tipe' <- foldr (==>) tipe <$> mapM (\_ -> VarN <$> flexibleVar) [1..kind]
4546 let tvars = map VarN cvars
4647 msg = concat [ "Constructor '", name, "' expects ", show kind
4748 , " argument", if kind == 1 then "" else "s"
@@ -49,7 +50,7 @@ constrain env pattern tipe =
4950 if length patterns /= kind then error msg else do
5051 fragment <- Monad.liftM joinFragments (Monad.zipWithM (constrain env) patterns tvars)
5152 return $ fragment {
52− typeConstraint = typeConstraint fragment /\ tipe === ctipe,
53+ typeConstraint = typeConstraint fragment /\ tipe' === ctipe,
5354 vars = cvars ++ vars fragment
5455 }
5556