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