@@ -46,19 +46,21 @@ findAmbiguous hints hints' assumptions continue =
46constrain typeHints (Module _ _ imports stmts) = do
46constrain typeHints (Module _ _ imports stmts) = do
47 (ass,css,schemess) <- unzip3 `liftM` mapM stmtGen stmts
47 (ass,css,schemess) <- unzip3 `liftM` mapM stmtGen stmts
48 hints <- typeHints
48 hints <- typeHints
49+ let extraImports = ("Time", Hiding ["read"]) : map (\n -> (n, Hiding []))
50+ ["List","Signal","Text","Graphics","Color"]
51+ insert as n = do v <- guid; return $ Map.insertWith' (\_ x -> x) n [v] as
49− let aliasHints = getAliases (imports ++ extraImports) hints
52+ aliasHints = getAliases (imports ++ extraImports) hints
50− let allHints = Map.fromList (aliasHints ++ concat schemess)
53+ allHints = Map.fromList (aliasHints ++ concat schemess)
51 assumptions <- foldM insert (unionsA ass) $ map fst (concat schemess)
54 assumptions <- foldM insert (unionsA ass) $ map fst (concat schemess)
52− findAmbiguous (map fst hints) (map fst aliasHints) assumptions $
55+ findAmbiguous (map fst hints) (map fst aliasHints) assumptions $ do
53− do let cs = let f k s vs = map (\v -> Context k $ v :<<: s) vs in
56+ let f k s vs = map (\v -> Context k $ v :<<: s) vs
54− concat . Map.elems $ Map.intersectionWithKey f allHints assumptions
57+ cs = concat . Map.elems $ Map.intersectionWithKey f allHints assumptions
55− let escapees = Map.keys $ Map.difference assumptions allHints
58+ escapees = Map.keys $ Map.difference assumptions allHints
56− return . Right . (,) escapees $ cs ++ Set.toList (Set.unions css)
59+ return . Right . (,) escapees $ cs ++ Set.toList (Set.unions css)
57− where extraImports =
60+
58− map (\n -> (n, Hiding [])) ["List","Signal","Text","Graphics","Color"]
59− insert as n = do v <- guid; return $ Map.insertWith' (\_ x -> x) n [v] as
61−gen :: Expr -> GuidCounter (Map.Map String [X], Set.Set (Context String Constraint), Type)
61+gen :: Expr -> GuidCounter (Map.Map String [X],
62+ Set.Set (Context String Constraint),
63gen (Var x) =
65gen (Var x) =
64 do b <- guid
66 do b <- guid