Thanks, Juan. I don't need to know the length of the seq, though, only that it is lazy. I don't want to realize *any* lazy seqs. Ideally, I'd like to be able to print any data structure and have all lazy seqs print just like it does in the example I gave above (i.e., "clojure.lang.LazySeq@c5d38b66"), whether it is finite or infinite.
I also don't want to walk through every data structure to check if it contains a lazy seq, but maybe that is the only option. I've also tried: (defmethod print-method clojure.lang.LazySeq [q, w] (.write w "#clojure.lang.LazySeq")) The next step might be to investigate why infinite lazy seqs don't print as clojure.lang.LazySeq, like the finite ones. On Monday, November 2, 2020 at 9:22:58 AM UTC-8 jpmon...@gmail.com wrote: > Hi Austin, > > Since there is no way to know the length of a lazy-seq without realizing > it, I think your only choice is to set a limit on it by binding > *print-length* if you are not sure about the sequence. > > Other thing you can try is bounded-count like this : > > (defn looks-finite? [xs] > (let [limit 1000] > (< (bounded-count limit xs) limit))) > > (looks-finite? (map inc (range))) ;; => false > (looks-finite? (map inc (range 100))) ;; => true > > I hope that helps. > > Juan > El domingo, 1 de noviembre de 2020 a las 20:06:39 UTC-3, Austin Haas > escribió: > >> >> How can I make sure that a logging function won't try to realize an >> infinite lazy seq that could be anywhere in the arguments passed to the >> logging function? >> >> Is there some way to guarantee that lazy seqs won't be realized when >> converting to a string? >> >> I know I can bind *print-length*, but I don't want to constrain every >> collection. >> >> And I know that lazy seqs aren't always realized, but that doesn't seem >> to help if they are infinite: >> >> user=> (str (map inc (range 10))) >> "clojure.lang.LazySeq@c5d38b66" >> >> user=> (str (map inc (range))) >> <never ends> >> >> 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 --- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/ab820e20-75ad-4852-aa01-9321cb7487b4n%40googlegroups.com.