<分区>
我们知道pure functions :
- 始终对给定的输入返回相同的结果
- 不产生副作用
这将我们引向 referential transparency - 其中,可以在不改变程序行为的情况下用值替换表达式。
这告诉我们一个程序可以说是purely functional如果它排除了程序运行环境中实体的破坏性修改(更新)。
当我们查看 Software Transactional Memory 时,我们看到一种类似于数据库事务的并发控制机制,用于控制并发计算中对共享内存的访问。但它本身并没有什么特别的功能。
我的问题是:我们能否将 Clojure 的 STM 视为“功能性”?