【发布时间】:2013-02-04 00:35:06
【问题描述】:
假设我有以下记录 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),创建这样的函数将需要大量输入,我认为这是完全没有必要的。
有没有更简单的方法来做同样的事情?
【问题讨论】:
-
存在用于更新的记录语法,但很快就会变得很麻烦。改为查看lenses。