【发布时间】:2015-10-26 00:31:24
【问题描述】:
背景:我正在创建一个带有有状态 monad 的游戏,用于读取和写入对游戏全局状态的更改。
我想将我的游戏分成多个组件,例如“角色”,为这些组件与全局状态交互提供特定领域的方式。理想情况下,这可能是定义我可以使用的MonadState Character m => m a 形式的特定操作,但每个这样的m a 都会对父级(全局状态)进行更改。
我已经四处寻找状态单子之间的转换,或提供从一个状态单子到另一个状态单子的接口,但具体的语言超出了我的知识范围。我也已经在使用 Lenses,我想知道是否可以用它们做点什么。
编辑:
我希望能够做类似的事情
moveCharacter :: MonadState Character m => Int -> Int -> m ()
并让它在内部执行move :: MonadState World m => Int -> Int -> m ()。基本上,将世界细节从角色中抽象出来。
谢谢!
【问题讨论】:
标签: haskell monad-transformers facade state-monad