Concrete syntax for pattern synonym type signatures

Dr. ERDI Gergo gergo at erdi.hu
Mon Nov 10 16:50:46 UTC 2014


On Mon, 10 Nov 2014, Richard Eisenberg wrote:

>> pattern P :: forall a. Num a => forall c. (Eq a, Ord Bool, Show c) => c -> Bool -> T a Bool
>> pattern C :: (Eq b, Num b) => () => b -> c -> X Maybe (Maybe b)
>
> Of course, you can drop the `forall`s in `P`'s type.
>
> This has, I believe, several advantages over the other order:
> - If you write the `forall`s in, the scope builds left to right. In the 
> other order, the scoping is very bizarre.

I am by now convinced that allowing two separate sets of `forall`s is 
overkill, we don't need the extra specificity. One `forall` with a mixed 
bag of type variables should be enough.


More information about the ghc-devs mailing list