# Incoherence

**John Hughes
**
[email protected]

*Tue, 23 Oct 2001 10:50:05 +0200 (MET DST)*

I noticed today that the presence or absence of a type signature can
change the RESULT of an expression in Hugs and GHC nowadays. Here's an
example:
a = (let x = ?x in
x with ?x = 1)
with ?x = 2
-- a == 2
b = (let x :: (?x :: Integer) => Integer
x = ?x in
x with ?x = 1)
with ?x = 2
-- b == 1
It's the infamous monomorphism restriction at work, again, of course. Now,
what are the proof rules for reasoning about implicit parameters again (:-)?
John Hughes