我有一个这样的样本类型:
data Sample_Type = Sample_Type { field1 :: Int,
field2 :: Int,
field3 :: [Int]
} deriving (Show, Eq)
我正在使用此函数field3
在记录中附加列表:
insertPlan :: [Sample_Type] -> Sample_Type -> Int -> [Sample_Type]
insertPlan [] _ _ = []
insertPlan (x:xs) y b = if (x == y)
then (y {field3 = b:(field3 y)}):xs
else x:(insertPlan xs y b)
我正在尝试将上述函数转换为更通用的形式(因为我有许多记录数据类型,其中有一个列表需要更新)。
我想出了以下一段代码,但这不起作用(显然):
insertVariant :: [a] -> a -> (a -> [Int]) -> Int -> [a]
insertVariant (x:xs) a f b = if (x == a)
then (a {f = b:(f a)}):xs
else x:(insertVariant xs a b)
有什么好办法解决这个问题吗?