Understanding sequence abstraction
Hi Clojurians, I have some conceptual questions on the sequence abstraction. I understand that (seq coll) will give me a sequence. coll maybe be a list, vector, map, set, LazySeq or nil. 1. In case coll is a LazySeq why does (seq coll) realize its first element? I thought seq just did a type conversion and all of list, vector .. etc implemented Seqable or something. 2. Why is there no other way to determine an empty coll except (not (seq coll)). - Thanks -- 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
Re: Understanding sequence abstraction
1. In case coll is a LazySeq why does (seq coll) realize its first element? I thought seq just did a type conversion and all of list, vector .. etc implemented Seqable or something. Because seq is defined as returning nil for an empty sequence. The only way to find that out for a lazy sequence is to realize the first element. 2. Why is there no other way to determine an empty coll except (not (seq coll)). user= (empty? []) true -- 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
Re: Understanding sequence abstraction
On May 30, 8:11 pm, Richard Newman holyg...@gmail.com wrote: 2. Why is there no other way to determine an empty coll except (not (seq coll)). user= (empty? []) true And in fact, the docs for (empty?) say: Please use the idiom (seq x) rather than (not (empty? x)) Perhaps the seq docs should indicate empty? in some way. -- 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