Isaac Dupree:
Manuel M T Chakravarty wrote:
Simon Peyton-Jones:
Nothing deep. Just that "=" means so many things that it seemed
better to use a different notation.
Also, using "=" would have entailed significant changes to GHC's
parser. Type constraints are in the same syntactic category as
types and types can appear as part of expressions in type
annotations (such as "e::t") and on the lhs of let-bindings (such
as "let x::t = e in e'"). Especially, considering the later,
imagine "t" can now also contain the symbol "=" which in the
grammar serves as a separator between the lhs and the rhs of a let
bindings.
I actually did try using "=", but it got too messy.
oh, because it doesn't require parentheses:
f :: a ~ b => a -> b
f = id
and also because, it sounds like you say, current parser looks at
"type-class" and "type" expressions the same, so one doesn't really
want to distinguish them just for this.
x :: a = b => c = x
really is too confusing, even if I can't see any way to make it
ambiguous given current set of available language extensions.
For example,
let {x :: t1 = t2 = e} in ...
Now, this is not type correct, as x cannot have a type "t1 = t2", but
the parser cannot know that. For the parser, a type constraint is a
type like any other.
Manuel
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users