@@ -8,12 +8,12 @@ import Type.Type
8import Type.Fragment
8import Type.Fragment
9import Type.Environment as Env
9import Type.Environment as Env
11−constrain :: Environment -> Literal -> Type -> TypeConstraint
11+constrain :: Environment -> Literal -> Type -> IO TypeConstraint
12constrain env literal tipe =
12constrain env literal tipe =
13 let prim name = Env.get env Env.types name in
13 let prim name = Env.get env Env.types name in
14 case literal of
14 case literal of
15− IntNum _ -> tipe === prim "Int"
15+ IntNum _ -> fmap (\n -> tipe === VarN n) number
16− FloatNum _ -> tipe === prim "Float"
16+ FloatNum _ -> return $ tipe === prim "Float"
17− Chr _ -> tipe === prim "Char"
17+ Chr _ -> return $ tipe === prim "Char"
18− Str _ -> tipe === TermN (App1 (prim "[]") (prim "Char"))
18+ Str _ -> return $ tipe === TermN (App1 (prim "[]") (prim "Char"))
19− Boolean _ -> tipe === prim "Bool"
19+ Boolean _ -> return $ tipe === prim "Bool"