***SYNTAX ONLY***
I was quite suprised to see `atype' in the syntax for expression type
signatures in Kevin's proposal:
| exp -> exp(0,n) [ :: [ context => ] atype]
Then I looked at the current Haskell report and found the same restriction!
Is there any way we can avoid this? I presume that the main reason for the
restriction is to avoid parsing problems with expressions such as:
case e1 of somePat | e2 :: Type -> Type -> rhs.
But this also forces me to write id :: (a -> a) and emptyTree :: (Tree a)
where I'd much rather have id :: a -> a and emptyTree :: Tree a.
I imagine this could be fixed by changing `atype' above to `type' and
modifying the syntax of guards to:
gd -> | exp(0,n) instead of the current gd -> | exp.
Is this reasonable? Would anybody else like to see this change too?
Mark