Perhaps I should have said that seqs fulfil the same role as iterators do, rather than claiming they're alike :)
- James On 2 December 2013 21:42, Alex Miller <a...@puredanger.com> wrote: > Actually, I'd say seqs are very much *unlike* iterators in other languages > (Java in particular). > > Iterators - stateful cursors that conflate iteration with a check for > whether more elements exist > Seqs - immutable persistent views of a collection that separate iteration > from checking for more elements > > http://clojure.org/sequences > > > On Sunday, December 1, 2013 6:22:57 PM UTC-6, James Reeves wrote: > >> Seqs in Clojure are very much like iterators in other languages. They're >> an abstraction for navigating a sequential data structure. >> >> Also because values in Clojure are immutable, you rarely, if at all, >> encounter situations where those objects need to be copied. Why would you, >> when you can just reference the original object, secure in the knowledge >> that its value cannot change. >> >> - James >> >> >> On 1 December 2013 20:15, Andy Smith <the4th...@googlemail.com> wrote: >> >>> Can a seq be thought of as a kind of a list of pointers to the original >>> vector elements then? If so, then does an operation on a vector, (e.g. >>> reverse), cause clojure to internally generate a seq of pointers to the >>> original vector elements? In other words seqs seem to provide a layer of >>> indirection to avoid the need to copy elements of the original collection? >>> >>> >>> On Saturday, 30 November 2013 21:31:34 UTC, Jim foo.bar wrote: >>> >>>> On Sat, 30 Nov 2013 13:15:33 -0800 (PST) >>>> Andy Smith <the4th...@googlemail.com> wrote: >>>> >>>> > but >>>> > my question is really about the more general case of any function >>>> > that manipulates a vector e.g. the following also returns a list >>>> > rather than a vector as desired, >>>> >>>> In Clojure you rarely have to worry about types. All the >>>> data-structures fall under a common set of abstractions and in >>>> particular the ISeq interface. Strictly speaking map returns a seq not >>>> a list. In fact a lazy seq...this is by design so further operations >>>> can be applied lazily later...if you use eager operations like mapv >>>> exclusively you lose the ability to aggregate operations without cost. >>>> hope that clarifies it... >>>> >>>> >>>> Jim >>>> >>> -- >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@googlegroups.com. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.