gpt4 book ai didi

haskell - 使用 Haskell @ 更新记录中的单个字段

转载 作者:行者123 更新时间:2023-12-03 00:10:02 25 4
gpt4 key购买 nike

我需要更新一个非常大的默认记录的一个字段。

由于默认值可能会更改,我不想手动重建整个记录。

现在我遇到了以下方法,但我不确定它是如何工作的:

unaggregate :: MyResult -> MyResult
unaggregate calc@MyResult{..} = calc{ the_defaults = the_override
`mappend` the_defaults }
where
the_override = create ("aggregation" := False)

我尝试在 Google 中搜索“Haskell @ 运算符”,但它不会立即返回有用的信息。

我在某处看到calc@MyResult{..}对变量进行模式匹配,但我看不到什么变量 calcMyResult 做的记录...

我也查过mappend (和幺半群),我也不确定它们是如何工作的......

感谢您的帮助

最佳答案

@ 符号称为“as-pattern”。在上面的示例中,您可以使用 calc 来表示整个记录。通常您会像这样使用它:calc@(MyResult someResult) - 这样您就可以同时拥有整个内容和您匹配的部分。您可以对列表 (myList@(myHead:myTail)) 或元组 (myTuple@(myFst, mySnd)) 执行相同的操作。这非常方便!

MyResult{..} 使用RecordWildcards 。这是一个简洁的扩展!但是 RecordWildcards 不能帮助您仅更新记录的一个字段。

您可以这样做:calc { theFieldYouWantToUpdate = SomethingNew }

关于haskell - 使用 Haskell @ 更新记录中的单个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313433/

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