Thu, 3 May 2001 15:26:38 -0600, Alastair Reid <reid@cs.utah.edu> pisze:
You can always use 'case' instead of 'let' for variable bindings.
Except, of course, for top level bindings which is where the monomorphism restriction is usually most noticable.
Right, but an explicit monomorphic type signature would ensure that it's computed once. Type signatures on toplevel bindings are a good idea anyway, and there is no ambiguity for implicit parameters which must yield a function-like binding.
Unless I missed something, reason (2) prevents us from completely getting rid of the restriction even if we are willing to ignore (1).
Ok. Let's keep (2) and remove (1). ghc -fno-monomorphism-restriction allows polymorphis cases like (2) and they do create ambiguous types like Read a => String. I would treat it as a bug: removing monomorphism restriction should not go that far. Haskell 98 doesn't allow removing it for pattern bindings by supplying a type signature. Here is a crazy idea: either of these ~x = ... x@_ = ... creates a pattern binding, so it's a way of writing it without a type signature if there was no monomorphic restriction :-) -- __("< Marcin Kowalczyk * qrczak@knm.org.pl http://qrczak.ids.net.pl/ \__/ ^^ SYGNATURA ZASTÊPCZA QRCZAK