最佳答案
假设我有以下 ADT 记录:
data Foo = Bar { a :: Integer, b :: String, c :: String }
我需要一个函数,它接受一条记录并返回一条记录(类型相同) ,其中除了一个字段之外,所有字段的值都与作为参数传递的字段的值相同,如下所示:
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
上面的方法是可行的,但是对于具有更多字段的记录(比如 10
) ,创建这样的函数需要进行大量键入,我认为这是完全没有必要的。
还有什么方法可以减少这种无聊的做法吗?