Я немного играю с атомами в clojure. У меня atom
указывает на lazy-seq
. В другом фрагменте кода я хочу обновить значение атома до результата выполнения next
в последовательности, но, учитывая, что и swap!
, и reset!
возвращают выполнение обновленного значения, никогда не заканчивается. Я понял, что всегда могу обернуть вызов swap!
, reset!
в оператор do, а затем вернуть nil
, но мне интересно, насколько это идиоматично или есть ли альтернативное решение для этого.
Не прекращается:
(def x (atom (range)))
(swap! x next)
Завершает
(def x (atom (range)))
(do (swap! x next) nil)
(first @x) ;1
(do (swap! x next) nil)
(first @x) ;2