我有这个全球状态
type GlobalState a = State Int a
但是一个函数需要自己的本地状态并访问GlobalState
type LocalState a = State [String] a
但我现在不确定要将它们结合起来。
现在我只是将本地状态添加到全局
type GlobalState a = State (Int, [String]) a
它工作正常,但我不认为这是正确的,因为我只需要一个函数中的本地状态。 还有更好的方法吗?
答案 0 :(得分:2)
您可以使用monad stack两个State
s:
type LocalState a = [String]
type GlobalState a = [String]
newtype MyState a = StateT GlobalState (State LocalState) a