Can't generate data decls deriving multiparam type classes with TH
This applies to both data declarations and (more commonly) newtypes. Example:
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype T a = X { unT :: State Int a } deriving (MonadState Int)
The newtype declaration is impossible to express in Template Haskell's AST, as the field for the derived classes is [Name]
when it should really be Cxt
.
A workaround is to generate a StandaloneDerivD
for each derived multiparam class, but this requires that the user enable the StandaloneDeriving
extension which can be unintuitive, especially as there's no way (as far as I can tell) to detect whether this extension is enabled and report a proper error message if it isn't.
Trac metadata
Trac field | Value |
---|---|
Version | 7.10.2 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Template Haskell |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |