
#8581: Add support for explicitly-bidirectional pattern synonyms -------------------------------------+------------------------------------- Reporter: cactus | Owner: cactus Type: feature | Status: closed request | Milestone: 7.10.1 Priority: normal | Version: Component: Compiler | Keywords: Resolution: fixed | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: 5144 Type of failure: | Related Tickets: None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by simonpj): It's a bit hard to understand your example because you don't give any types, or any code that you think should work, but doesn't. But I ''think'' you mean this: the two directions of an explicitly- bidirectional pattern might have utterly different class constraints. After all, the two directions are specified by quite different code. Suppose that * Pattern `P` (used in a pattern) ''requires'' constraints `CR`, and ''provides'' constraints `CP` * Constructor `P` (used in an expression) requires constraints `CE` Then I think the only required relationship is this: `CP` must be provable from `CE` (since `CP` is packaged up in a P-object). Is this what you meant? Then indeed I think that we have not really discussed this possibility at all. There is a tricky UI issue, which is how to say when you ask `:info P`. And, worse still, what it would mean to give a type signature to `P`. So it looks to me, on first impression, that what you want is do-able and sensible. But there are some design issues to work out first. Let's see what Gergo has to say. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8581#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler