Ah, thanks for the explanation. I hadn't heard of ExtendedDefaultRules before. Peter On 8 June 2013 14:35, Brandon Allbery <allbery.b@gmail.com> wrote:
On Sat, Jun 8, 2013 at 9:02 AM, Peter Hall <peter.hall@memorphic.com>wrote:
This is confusing me, and I'm wondering if it's a compiler bug. I have this:
foo = (++) `on` show
I'm expecting the type to be:
foo :: Show a => a -> a -> String
But GHCI is inferring:
foo :: () -> () -> String
No bug; it's the monomorphism restriction combining with extended defaulting to infer a monomorphic type. If you want to keep the monomorphism restriction and throw a type error, disable ExtendedDefaultRules.
-- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net