我有一些结构:
data S = {
a :: Integer,
b :: Integer,
c :: String,
d :: Map String Integer
}
我在我的State monad
中关闭了它,我正在按照以下方式使用它:
s <- get
let S {a = a', b =b', c=c', d=d'} s
put $ S {a = a' + 1, b = b', c= c', d = d'}
正如你所看到的,当我想修改/只读一个字段(这里是a
)时,我必须得到并放置所有字段 - 它很尴尬 - 否则我会收到警告,有时会收到运行时错误。
你能尝试给我一些解决方案,让它变得更好,更干净吗?
提前致谢,
此致
答案 0 :(得分:7)