4 ms·
> a Seqable object that will invoke the body only the first time seq is called, and will cache the result and return it on all subsequent seq calls. To guarant
by lcedp 3y ago
> a Seqable object that will invoke the body only the first time seq
is called, and will cache the result and return it on all subsequent
seq calls.
To guarantee "only the first time", I suppose you need to have some kind of synchronization at some level.
- avodonosov 3y agoFor multithreaded access yes. I meant that the docs do not mention thread safety.
- daveliepmann 3y ago"All of the Clojure collections...are efficient and inherently thread-safe." https://clojure.org/reference/data_structures#Collections https://clojure.org/reference/data_structures#Collections "Seqs differ from iterators in that they are persistent and immutable, not stateful cursors into a collection. As such, they are useful for much more than foreach - functions can consume and produce seqs, they are thread safe, they can share structure etc." https://clojure.org/reference/sequences https://clojure.org/reference/sequences I think it's a fundamental enough property of clojure data structures that it would be redundant to mention it in every docstring.
- avodonosov 3y agoThanks, that's convincing. (why I was in doubt, is because while immutable functional collections that clojure embaces are naturally thread-safe, there is an imperative aspect in creation of a lazy sequence from user provided function, and I was not sure clojure has to provide synchronization guarantees here)