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

_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org//mailman/listinfo/haskell-prime

Reply via email to