假设我有以下记录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
)的记录,创建这样的函数将需要进行很多输入,我觉得这是不必要的。
有没有那么简单的乏味方法?
3
存在用于更新的记录语法,但是很快变得麻烦。看一下镜头。
—
Cat Plus Plus