
| > And how about this one: | > | > Error after type deriving/checking: | > Type error type clash between Prelude.Int and Main.Foo | > when trying to apply function at 4:17 to its 1:st argument at 4:8. | | | How about: | | file1.hs:4:8: Error after type deriving/checking: | Type error type clash between Prelude.Int and Main.Foo | when trying to apply function to its 1:st argument | file2.hs:4:17: (the function is defined here). Unfortunately, that is not what the current error message means. The function is not defined at line 4, column 17 - it is used at that position. The function is at 4:17, the argument is at 4:8 (this is an infix application), and the definition is somewhere else, possibly not even in this module. It could be the function definition that is wrong, or the argument, or it could be the application (e.g. an argument missing). Therefore, in the message Type error type clash between Prelude.Int and Main.Foo when trying to apply function to its 1:st argument both positions are vital to understanding the message - either position on its own is not sufficient. (It would be nice to also report a position for the definition, if there is one, but we don't currently have that information in the compiler.) Regards, Malcolm