我最终试图定义我想要遍历的函数的嵌套记录,以便替换深层嵌套的函数。
像这样的东西
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
这样的实例吗?