2012-05-11 10:28:56 +00:00
|
|
|
|
2012-08-09 14:38:18 +00:00
|
|
|
module Types.Unify (unify) where
|
2012-05-11 10:28:56 +00:00
|
|
|
|
2012-05-18 03:16:16 +00:00
|
|
|
import Control.Monad (liftM)
|
2012-08-09 14:38:18 +00:00
|
|
|
import qualified Data.Map as Map
|
2012-11-29 06:16:08 +00:00
|
|
|
|
2013-04-05 16:55:30 +00:00
|
|
|
import Ast
|
2012-05-20 05:09:12 +00:00
|
|
|
import Guid
|
2012-08-09 14:38:18 +00:00
|
|
|
import Types.Constrain
|
2012-11-29 06:16:08 +00:00
|
|
|
import Types.Solver
|
2013-04-05 16:55:30 +00:00
|
|
|
import Types.Alias as Alias
|
2012-05-20 05:09:12 +00:00
|
|
|
|
2013-04-05 16:55:30 +00:00
|
|
|
unify hints modul@(Module _ _ _ stmts) = run $ do
|
2012-10-21 11:50:40 +00:00
|
|
|
constraints <- constrain hints modul
|
2013-04-05 16:55:30 +00:00
|
|
|
either (return . Left) (solver (Alias.get stmts) Map.empty) constraints
|
2012-05-11 10:28:56 +00:00
|
|
|
|