From a6ed6e589b773397a13129aa8bd837dbe4919433 Mon Sep 17 00:00:00 2001 From: sebastian Date: Sat, 13 May 2023 01:40:05 +0200 Subject: [PATCH] Fixed two inference bugs --- src/TypeChecker/TypeCheckerHm.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/TypeChecker/TypeCheckerHm.hs b/src/TypeChecker/TypeCheckerHm.hs index e094875..45725aa 100644 --- a/src/TypeChecker/TypeCheckerHm.hs +++ b/src/TypeChecker/TypeCheckerHm.hs @@ -315,14 +315,14 @@ algoW = \case EVar (LIdent i) -> do var <- asks vars case M.lookup (coerce i) var of - Just t -> - inst t >>= \x -> - return (nullSubst, (T.EVar $ coerce i, x)) + Just t -> do + t <- inst t + return (nullSubst, (T.EVar $ coerce i, t)) Nothing -> do sig <- gets sigs case M.lookup (coerce i) sig of Just (Just t) -> do - t <- freshen t + t <- inst t return (nullSubst, (T.EVar $ coerce i, t)) Just Nothing -> do fr <- fresh @@ -839,7 +839,7 @@ existInj :: (Monad m, MonadState Env m) => T.Ident -> m (Maybe Type) existInj n = gets (M.lookup n . injections) flattenType :: Type -> [Type] -flattenType (TFun a b) = flattenType a <> flattenType b +flattenType (TFun a b) = a : flattenType b flattenType a = [a] typeLength :: Type -> Int