首页 > 解决方案 > 是否有任何技术可以在完全不可变的编程语言中实现缓存?

问题描述

我检查了 Haskell,但即使在那里他们也在内部使用可变数据类型。

假设一切都是不可变的,有没有办法拥有缓存?

编辑:假设这是一个通用缓存,它应该保留计算结果(例如从数据库读取)

标签: cachingfunctional-programmingimmutability

解决方案


尽管我使用的是 Scala,但我遇到了这篇文章,试图做一些类似于 OP 想做的事情。在 Scala 中,变量和对象可以是可变的,因此如果需要,您始终可以使用可变类型。

但如果没有,在 Haskell 中,您可以使用State monadData.Map结合使用不可变数据对有状态、可变缓存进行建模。在 Scala 中,您可以将Cats 中的 State monad与不可变映射一起使用。


推荐阅读