@@ -51,12 +51,15 @@ emptyTypeSolution = TypeSolution (TUnknown, RUnknown)
5151
5252typeOf :: Ident -> Value -> Check PolyType
5353typeOf name val = do
54− me <- fresh
55− (cs, n) <- typeConstraints (M.singleton name me) val
56− let allConstraints = TypeConstraint me (TUnknown n) : cs
57− solution <- solveTypeConstraints allConstraints emptyTypeSolution
54+ (cs, n) <- case val of
55+ Abs _ _ -> do
56+ me <- fresh
57+ (cs, n) <- typeConstraints (M.singleton name me) val
58+ return (TypeConstraint me (TUnknown n) : cs, n)
59+ _ -> typeConstraints M.empty val
60+ solution <- solveTypeConstraints cs emptyTypeSolution
5861 let ty = fst (runTypeSolution solution) n
59− allUnknownsBecameQuantified allConstraints solution ty
62+ allUnknownsBecameQuantified cs solution ty
6063 return $ varIfUnknown ty
6164
6265allUnknownsBecameQuantified :: [TypeConstraint] -> TypeSolution -> Type -> Check ()