派生没有模板haskell的记录数据类型

时间:2014-03-10 12:15:36

标签: generics haskell type-families deriving ghc-generics

所以,我一直在玩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:我知道这对于模板Haskell来说可能是可行的...只是想知道是否还有其他方法。

0 个答案:

没有答案