gpt4 book ai didi

haskell - 在复制其余字段的同时分配记录中的单个字段的简写方法?

转载 作者:行者123 更新时间:2023-12-03 04:42:35 25 4
gpt4 key购买 nike

假设我有以下记录 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),创建这样的函数将需要大量的输入,我认为这是完全没有必要的。

是否有其他不那么繁琐的方法可以做到这一点?

最佳答案

是的,有一种更新记录字段的好方法。在 GHCi 中你可以做——

> data Foo = Foo { a :: Int, b :: Int, c :: String }  -- define a Foo
> let foo = Foo { a = 1, b = 2, c = "Hello" } -- create a Foo
> let updateFoo x = x { c = "Goodbye" } -- function to update Foos
> updateFoo foo -- update the Foo
Foo {a = 1, b = 2, c = "Goodbye" }

关于haskell - 在复制其余字段的同时分配记录中的单个字段的简写方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com