- toString (ParseError p e) = concat [
- toString p,"SemError: ParseError: ", e]
- toString (Error e) = "SemError: " +++ e
- toString (UnifyErrorStub t1 t2) = toString (UnifyError {line=0,col=0} t1 t2)
- toString (UnifyError p t1 t2) = concat [
- toString p,
- "SemError: Cannot unify types. Expected: ",
- toString t1, ". Given: ", toString t2]
+ toString (ParseError p e) = concat [
+ toString p,"SemError: ParseError: ", e]
+ toString (Error e) = "SemError: " +++ e
+ toString (UnifyErrorStub t1 t2) = toString (UnifyError {line=0,col=0} t1 t2)
+ toString (UnifyError p t1 t2) = concat [
+ toString p,
+ "SemError: Cannot unify types. Expected: ",
+ toString t1, ". Given: ", toString t2]
+
+putIdent :: String Type -> Env Void
+putIdent i t = gets ('Map'.get i) >>= \mt -> case mt of
+ Nothing = modify ('Map'.put i t)
+ Just t2 = unify t t2 >>= \t3-> modify ('Map'.put i t3)