【发布时间】:2018-12-01 15:39:27
【问题描述】:
要么我已经筋疲力尽,无法正确思考,要么这是不可能的,但我想swap! 一个指向无限惰性序列的原子,其序列的rest 是目前在里面
我的程序挂起的原因很明显,因为compare-and-set! 尝试在交换之前检查以前的和新的 seq 是否相等。相等性检查基本上永远不会终止
关于如何实现这一点的任何线索?
(def beyond-infinity (atom (repeat 1)))
(defn keep-pulling [] (swap! beyond-infinity #(rest %)))
编辑
以前我的惰性序列是range,它在其中工作,但在 REPL 上由于实现了返回的序列,我的 REPL 被挂起
无论如何,repeat 仍然失败
【问题讨论】:
-
对我来说,它与
repeat和range一样好用,尽管range我至少可以检查第一个元素,看看它在做什么——在任何情况下情况下,我将它挂在repeat上没有任何问题(在repl 中我正在做(do (keep-pulling) nil)以避免您提到的问题)。 -
@jas 我的错是 REPL 导致了问题