caching - 是否有任何技术可以在完全不可变的编程语言中实现缓存?
问题描述
我检查了 Haskell,但即使在那里他们也在内部使用可变数据类型。
假设一切都是不可变的,有没有办法拥有缓存?
编辑:假设这是一个通用缓存,它应该保留计算结果(例如从数据库读取)
解决方案
尽管我使用的是 Scala,但我遇到了这篇文章,试图做一些类似于 OP 想做的事情。在 Scala 中,变量和对象可以是可变的,因此如果需要,您始终可以使用可变类型。
但如果没有,在 Haskell 中,您可以使用State monad与Data.Map结合使用不可变数据对有状态、可变缓存进行建模。在 Scala 中,您可以将Cats 中的 State monad与不可变映射一起使用。
推荐阅读
- ios - 如何获取 UIActivityViewController popoverPresentationController 的大小?
- parallel-processing - Chapel 中的共享内存 n 体模拟
- javascript - javascript d3 从一组数据创建数据集
- android - Firebase Firestore:键名是变量。找不到 santosh@gmail.com 的设置器字段
- oracle - Oracle Application Express 11g
- php - 如何在 Laravel 的密码文本字段下方显示条件消息?
- java - 命令在我打开的终端中是可执行的,但是当我使用java函数打开终端并执行它时无法执行
- css - Firefox 模拟打印样式
- mongodb - mongodb 聚合框架中的性能下降
- c - 在c中减去不同大小的数组