on fb21e21 help sign in
elk/elm/src/Initialize.hs
22 lines 641 B history raw
1module Initialize (initialize) where
3import Control.Applicative ((<$>))
4import Control.Monad.Error
5import Data.List (lookup)
7import Ast
8import Parse.Parser (parseProgram)
9import Rename
10import Types.Types ((-:))
11import Types.Hints (hints)
12import Types.Unify
13import Optimize
16initialize str =
17 do modul@(Module name ex im stmts) <- parseProgram str
18 (escapees, subs) <- unify hints modul
19 let modul' = optimize . renameModule $ Module name ex im' stmts
20 where im' | any ((=="Prelude") . fst) im = im
21 | otherwise = ("Prelude", Hiding []) : im
22 subs `seq` return (escapees, modul')