gpt4 book ai didi

purescript - 如何更新用 `data`而不是 `type`定义的PureScript记录?

转载 作者:行者123 更新时间:2023-12-04 13:48:09 28 4
gpt4 key购买 nike

更新type定义的记录是可行的,如Differences from Haskell所述

type PointRec = { x :: Number, y :: Number }

setX :: Number -> PointRec -> PointRec
setX val point = point { x = val }

但是当使用 data定义(并因此指定一个构造函数)时,它不会:
data PointRec = PointRec { x :: Number, y :: Number }

setX :: Number -> PointRec -> PointRec
setX val point = point { x = val }

我从编译器得到的错误是
Could not match type

和一些细节。

我在这里可以做什么?

最佳答案

您需要解包和包装数据构造函数:

data PointRec = PointRec { x :: Number, y :: Number }

setX :: Number -> PointRec -> PointRec
setX val (PointRec point) = PointRec (point { x = val })

关于purescript - 如何更新用 `data`而不是 `type`定义的PureScript记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35753717/

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