Johannes Waldmann wrote:
> class ( Show p, ToDoc i, Reader b, ToDoc b, Measure p i b )
> => Partial p i b | p i -> b where ... -- (*)
>> (*) A funny visual aspect of FDs is the absurd syntax.
> On the left of "|", the whitespace is (type arg) application,
> but on the right, it suddenly denotes sequencing (tupling)
I think it's fine. The "p i b" on the left is effectively a tuple also. It
could be a tuple---i.e. the MPTC syntax could be "Partial (p,i,b)" and it
would still make sense.
The class declaration syntax is totally screwy anyway. Functional
dependencies are constraints, and should be grouped with the typeclass
constraints, but instead they're on opposite sides of the head. Plus the =>
implication is backwards. And the method declarations are also constraints.
We oughta have
class Partial p i b where
Foo p
(p,i) -> b
grok :: p -> i -> b
or
class Partial p i b | Foo p, p i -> b where
grok :: p -> i -> b
or something. But I'm not proposing anything of the sort. I'm in favor of
standardizing the syntax we've got. Syntax changes are disruptive, and I
don't think they're justified unless they free useful syntax for another
use, which this wouldn't.
-- Ben