Proposal #285:
suggests two new LANGUAGE pragmas -XNoImplicitForall and -XNoPatternSignatureBinds.
They have the effect of making a subset of existing programs illegal, and in that sense I don't think these are problematic. The intention is that these would be used with ExplicitForalls to enforce that all identifiers have explicit binding sites. I'm generally supportive of that.
However I think we should be wary of the potential future direction, mentioned in the proposal:
> As described in the motivation, this opens the door to other means to bind the previously implicitly bound variables.
i.e. an unbound name in a type could refer to a type variable bound in an enclosing scope. This would be a language *change*, not merely an addition or subtraction, and hence potentially fork-like. So we would want to consider very carefully whether that's the direction we want to take the language.
But since that isn't part of the current proposal, and the current proposal is merely an optional subtraction, I don't think it's controversial.
Cheers
Simon