
#11534: Allow class associated types to reference functional dependencies -------------------------------------+------------------------------------- Reporter: ekmett | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 7.10.3 checker) | Keywords: TypeFamilies, Resolution: | FunctionalDependencies Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Other | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by goldfire): Replying to [comment:27 dfeuer]:
If people want to go forward with desugaring fundeps to type families (sounds great to me), I think it would be lovely to add naming syntax:
{{{#!hs class Foo a b c d | (Q, R :: a -> b c), (S :: b d -> a) }}}
I tend to like the option to give names, but I cringe at this syntax. The `::` in there activates my brain's type parser. Then, that parser successfully processes `a -> b c`. But then my brain experiences quite a jarring type error when it tries to treat the result of that parse as a functional dependency. I have no better suggestion here, and I would probably admit that this is the best available syntax. I just hate experiencing type errors in my brain just as much as in my running programs! Haskell generally prevents the latter. I have no good idea how to prevent the former, in general. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11534#comment:29 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler