Tom*_*nto 11 haskell functional-programming scala referential-transparency
我目前正在玩Scala开发,但我需要与诸如box2d之类的库集成来处理物理.问题是,这需要依赖于管理其自身状态的外部库.您可以跟踪传递到box2d世界的物体.总结一下有用的方面:
所以我的问题是:
如何以优雅的方式跟踪这些引用(用于函数式编程),以及如何在代码的其余部分中最小化它对纯度的影响?
像国家单子这样的东西在这里我不会帮助我
最实际的方法是确定哪些不变量必须包含不必要的行为,而不泄漏事实有副作用,然后,一旦你有证据就是这种情况,将状态隐藏在"unsafePerformIO"中.
另一种方法是通过例如显式的"我已经初始化"令牌来揭示存在内部状态的事实,该令牌是不可伪造的,并且是不可分割的,以保证对底层资源的线性访问.