结合本地和全球国家的最佳方式是什么?

时间:2016-08-15 14:21:52

标签: haskell monad-transformers state-monad

我有这个全球状态

type GlobalState a = State Int a

但是一个函数需要自己的本地状态并访问GlobalState

type LocalState a = State [String] a

但我现在不确定要将它们结合起来。

现在我只是将本地状态添加到全局

type GlobalState a = State (Int, [String]) a

它工作正常,但我不认为这是正确的,因为我只需要一个函数中的本地状态。 还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用monad stack两个State s:

type LocalState a = [String]
type GlobalState a = [String]
newtype MyState a = StateT GlobalState (State LocalState) a