结合本地和全局状态的最佳方法是什么
What is the best way to combine local and global state
我有这个全局状态
type GlobalState a = State Int a
但是一个函数需要它自己的本地状态和对 GlobalState 的访问
type LocalState a = State [String] a
但我现在不确定是否将它们结合起来。
现在我只是将本地状态添加到全局状态
type GlobalState a = State (Int, [String]) a
它工作正常,但我认为它不对,因为我只需要在一个函数中使用本地状态。
有没有更好的方法?
您可以使用两个 State
中的 monad stack:
type LocalState a = [String]
type GlobalState a = [String]
newtype MyState a = StateT GlobalState (State LocalState) a
我有这个全局状态
type GlobalState a = State Int a
但是一个函数需要它自己的本地状态和对 GlobalState 的访问
type LocalState a = State [String] a
但我现在不确定是否将它们结合起来。
现在我只是将本地状态添加到全局状态
type GlobalState a = State (Int, [String]) a
它工作正常,但我认为它不对,因为我只需要在一个函数中使用本地状态。 有没有更好的方法?
您可以使用两个 State
中的 monad stack:
type LocalState a = [String]
type GlobalState a = [String]
newtype MyState a = StateT GlobalState (State LocalState) a