|  $m?P :: forall (r :: ?) a. [T a] -> R(r) -> R(r) -> r
|  
|  where R(r) = Void# -> r  if r :: #
|              , r           otherwise
|  
|  Is there a way to do that? 

No indeed.

|  Now, to cut down on the amount of code generated, I guess we could
|  have
|  
|  $m?P :: forall (r :: ?) a. [T a] -> (Void# -> r) -> (Void# -> r) -> r
|  
|  and always compile pattern synonym match continuations into lambdas
|  over this dummy Void#, but I thought we also wanted to avoid that...

I think that's fine.  These matchers will usually be inlined and all the 
clutter will go away.

|  Note that if P were to have arguments, the same problem would still be
|  present with the fail continuation (but not the success one).

Yes, let's take advantage of that

S
_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to