Björn Bringert wrote:
> Bulat Ziganshin wrote:
> Stand-alone deriving declarations are actually a little bit weaker  
> than normal deriving clauses, since the current implementation does  
> not let you reference the type arguments of a newtype in the  
> arguments to the MPTC. This example from the GHC manual cannot  
> currently be done with stand-alone deriving:
> 
>    class StateMonad s m | m -> s where ...
>    instance Monad m => StateMonad s (State s m) where ...
> 
>    newtype Parser tok m a = Parser (State [tok] (Failure m) a)
>                           deriving (Monad, StateMonad [tok])
> 
> 
> The below does not work, since tok is not in scope:
> 
> deriving StateMonad [tok] for Parser
> 
> Maybe the syntax should be changed to be:
> 
> deriving (Class t1 ... tn) for Type a1 ... an
> 
> where a1 ... an are type variables. This would allow:
> 
> deriving StateMonad [tok] for Parser tok m a

I'd be much in favour of a story that make derivings at data/newtype
declarations simply syntactic sugar for a data/newtype declaration
without a deriving clause plus a couple of stand-alone deriving
declarations.

Manuel


_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to