我目前正在玩Scala开发,但我需要与box2d这样的库集成来处理物理。问题是,这需要依赖于管理其自身状态的外部库。您可以跟踪传递到box2d世界的物体。总结游戏中的各个方面:
所以我的问题是:
如何以优雅的方式跟踪这些引用(用于函数式编程)以及如何在代码的其余部分中最小化它对纯度的影响?
状态monad的东西在这里不会帮助我,我想
答案 0 :(得分:5)
最实用的方法是确定哪些不变量必须为不必要的行为进行封装而不泄漏事实有副作用,然后,一旦你有证据就是这种情况,隐藏“unsafePerformIO”中的状态。
另一种方法是揭示存在内部状态的事实,例如一个明确的'我已被初始化'令牌,这是不可伪造的,不可分割的,以保证对底层资源的线性访问。
答案 1 :(得分:3)
Functional Reactive Programming是一个活跃的研究领域,但如果您不需要模拟因果关系,也可以使用Reader Monad。