我有一个函数,类型为
Map Int String -> Proxy () a () Void IO b
。现在它await
,对获取到的值进行操作,然后重新调用自身。我想改为使用State (Map Int String)
而不是将其作为参数传递,这样我就可以只使用forever
,而不需要每个分支都记得递归。我知道我需要使用StateT
将State
与另一个单子结合起来,但我不明白StateT
在该类型签名中属于哪里,或者是否需要lift
像get
这样的函数。一个既是State (Map Int String)
又是Proxy () a () Void IO b
的函数的正确类型是什么?