In my opinion courses like CIS194 take the correct approach; that is, delaying IO a bit (in comparison to other programming languages) to introduce it in a more coherent fashion.
I mean, the delay certainly does not help with users struggling to understand the error message. In the end… they would be like, what is skolem and rigid?
Delaying IO also gives a feel that haskell cannot be used for making practical programs unless you go extra masochistic.
That “rigid” word has been removed from error messages. Its changed in 9.0.1 or 9.2.1, I don’t remember exactly. Edit: this doesn’t seem to be true at all, I think I mixed up something.
Wow, now this is a huge progress! Are there other improvements coming to the error messages? For one, I’ve always found “occurs check” message quite cryptic. + also predicting which ppl wants when type mismatch error happens would help.
Better suggestions for fix would also help, tho idk where it should go.
Actually, I think it has not been removed from all messages. I just tried the example here and that still contains that strange (rigid, skolem) part even with GHC 9.2.1. Perhaps that would be a good issue to open at GitHub - haskell/error-messages (Edit: I’ve opened one here).