monomorphism restriction confusions

Isaac Dupree isaacdupree at
Mon Jul 9 16:28:05 EDT 2007

Haskell98's monomorphism restriction is too confusing!  See my mistaken 
GHC bug report <>. 
Whether a binding is monomorphic depends not just on syntax, but on the 
amount of type constraints on the right-hand side of a binding - and I 
didn't realize, because this issue usually doesn't come up (usually 
types are already monomorphic or are at least typeclass qualified, or at 
least don't have to be monomorphic to prevent a type error).  Although 
this finally convinces me that we should dump H98 m-r in favor of the 
very straightforward "monomorphic pattern bindings", if we don't, at 
least I believe that Report Section 4.5.5, Rule 1 needs a reword.  It 
uses "(un) restricted" to mean "restricted (to be monomorphic) IN SOME 
CASES".  Maybe a word like "suspicious" would be less misleading than 
"restricted" there?


More information about the Haskell-prime mailing list