使用函数派生记录的数据

时间:2017-11-23 16:58:15

标签: haskell generic-programming

我最终试图定义我想要遍历的函数的嵌套记录,以便替换深层嵌套的函数。

像这样的东西

data Module1 = Module1 {
  _module2 :: Module2
  _function1 :: Int -> String
} deriving (Typeable)

data Module2 = Module2 {
  _module3 :: Module3
  _function2 :: Double -> String
} deriving (Typeable)

data Module3 = Module3 {
  _function3 :: Float -> String
} deriving (Typeable)

replace :: (Float -> String) -> Module1 -> Module1
replace = undefined

我想实现替换,以便在_function3数据结构中替换Module1。我正在尝试通过为Data定义Module 1, 2, 3个实例来实现此目的,但我目前无法理解/实施gunfold以及Data上的关联方法。

问题1:如何为这些数据类型实现Data实例? 问题2:我可以实现我的目标并实施replace这样的实例吗?

0 个答案:

没有答案