所以,我一直在玩弄 GHC.Generics,它们很棒,但似乎有限/主要集中在生成实例上。
如果可能的话,我想做的是从另一个数据类型派生一个新的数据类型。
假设您有以下类型:
data Xpto = Xpto {
fstt :: First Int
lstt :: Last String }
我想“免费”获得以下数据类型:
data Xpto' = Xpto' {
fstt' :: Int
lstt' :: String }
我考虑过的一种可能性是使用类型族,但是新数据必须与 Xpto 相同:
class Xptos newtyped where
type UnNewTyped un :: (same kind as newtyped)
我开始认为这一切都不可能,而且我确信这有充分的理由。
注意 1:我知道这对于 Template Haskell 可能是可行的......只是想知道是否还有其他方法。