我很难理解惰性工作以及缓存是如何工作的。
我认为工作中的惰性序列的分步示例在这里真的可以提供帮助。例如,我读过以下问题:
但目前还不清楚。
我的问题是调用如何确定另一个调用是否与缓存调用“相等”以及它在缓存中保留多长时间?我试图(来源lazy-seq)但显然它在Java领域,所以我在这里运气不好。
对于一个简单的惰性序列,只取一个参数(比如两个幂的列表),如果我用 5 和 8 调用它会怎样?是否仅缓存了这两个值?
如果我要通过缓存已经调用惰性函数的每个输入来破坏内存,那么创建和缓存无限列表以获得无限结构的意义何在?
因为它说它会在每次后续调用中缓存结果......使用's'。
1: 参数结果为 '1' 缓存 2: 参数结果为 '2' 缓存 3: 参数结果为 '3' 缓存... 2 30: 我数到了 2 30 这很棒因为我很懒和所有,但现在内存中有一个 2**30 缓存,用于缓存所有后续调用的所有先前调用。
还是只是缓存的最后一个调用?
如果我编写一个以树为参数的惰性函数怎么办?它运行等于吗?关于通过的论点知道是否需要进行新的评估?
可以在运行时以某种方式跟踪这种行为吗?