_评论由:seancorfield_ 撰写
这是一个很好的观点!可以通过检查 {{(map? base)}} 来保持向后兼容性——也许还应该给出一个弃用警告?——但用户需要非常谨慎,因为他们将操作缓存,而 core.memoize 会将原始值包装在 {{IDeref}} 实例中,所以以下代码不会按预期工作:
(memo-swap! f assoc [42] 99)
它需要是
(memo-swap! f assoc [42] (delay 99))
这将是 API 中唯一真正暴露此功能的唯一位置。