我知道如何使用記錄語法在Haskell,但我有麻煩理解什麼花括號裏面的東西是。哈斯克爾記錄語法脫
data PairRecord = PR {foo::Int, bar::String} deriving (Eq,Show)
x = (PR {foo=1, bar="init"})
y= x {foo=23}
- 什麼是這
{foo=23}
的事情嗎?最後一行看起來好像是對函數x的一個 參數,顯然不是這種情況。 - 有沒有 我可以用
{foo=23}
做什麼,除了把它放在 的記錄後? - 有沒有正式的方式來解除它,就像我們可以用
do
表示法做的那樣?
所以,你可以desugar x {foo = 23},但是{foo = 23}本身沒有意義,唯一的用法是與x(或其他記錄)結合使用。 –
是的,沒錯。語法'{foo = ...}'只能用於構造,模式匹配或記錄更新,並且只能與其他組件結合使用。它沒有孤立的意義。 – kosmikus