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

时间:2016-03-02 17:07:09

标签: purescript

更新使用type PointRec = { x :: Number, y :: Number } setX :: Number -> PointRec -> PointRec setX val point = point { x = val } 定义的记录,如Differences from Haskell

所述
data

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

Could not match type

我从编译器得到的错误是

sudo service postgresql restart

和一些细节。

我可以在这做什么?

1 个答案:

答案 0 :(得分:11)

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

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

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