Re: printing lazy lists

2014-05-16 Thread Phillip Lord

Ah, that's better. Thank you!

Phil

Michał Marczyk michal.marc...@gmail.com writes:

 Use pr-str:

 user= (str (lazy-seq (list 1 2 3)))
 clojure.lang.LazySeq@7861
 user= (pr-str (lazy-seq (list 1 2 3)))
 (1 2 3)

 Cheers,
 Michał


 On 15 May 2014 16:29, Phillip Lord phillip.l...@newcastle.ac.uk wrote:


 I am trying to dump a representation of the contents of a list to file.
 I've recently changed how I generated this list and it's now lazy (not really
 by design more by side-effect, if you will excuse the poor choice of words).

 I was using

 (spit file (str lst \n))

 which worked quite nicely, but now it is failing. The problem is that I get a
 file full of clojure.lang.LazySeq@ lines. The problem comes from LazySeq
 directly, as this demonstration with range shows.

 user (str (list 1 2 3 4 5 ))
 (1 2 3 4 5)
 user (str (range 4))
 clojure.lang.LazySeq@e1b83
 user (println (range 4))
 (0 1 2 3)
 nil


 println is using prn and a multimethod to print out. In fact,
 clojure.lang.LazySeq doesn't implement toString, nor does it's super class.

 The best solution that I have come up with so far is to do

 (str (apply list (range 4)))

 I guess I can see why LazySeq doesn't implement toString by printing
 everything out, but is there a better way around my problem?

 Phil

 --
 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/d/optout.

-- 
Phillip Lord,   Phone: +44 (0) 191 222 7827
Lecturer in Bioinformatics, Email: phillip.l...@newcastle.ac.uk
School of Computing Science,
http://homepages.cs.ncl.ac.uk/phillip.lord
Room 914 Claremont Tower,   skype: russet_apples
Newcastle University,   twitter: phillord
NE1 7RU 

-- 
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/d/optout.


printing lazy lists

2014-05-15 Thread Phillip Lord


I am trying to dump a representation of the contents of a list to file.
I've recently changed how I generated this list and it's now lazy (not really
by design more by side-effect, if you will excuse the poor choice of words).

I was using 

(spit file (str lst \n))

which worked quite nicely, but now it is failing. The problem is that I get a
file full of clojure.lang.LazySeq@ lines. The problem comes from LazySeq
directly, as this demonstration with range shows.

user (str (list 1 2 3 4 5 ))
(1 2 3 4 5)
user (str (range 4))
clojure.lang.LazySeq@e1b83
user (println (range 4))
(0 1 2 3)
nil


println is using prn and a multimethod to print out. In fact,
clojure.lang.LazySeq doesn't implement toString, nor does it's super class.

The best solution that I have come up with so far is to do

(str (apply list (range 4)))

I guess I can see why LazySeq doesn't implement toString by printing
everything out, but is there a better way around my problem?

Phil

-- 
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/d/optout.


Re: printing lazy lists

2014-05-15 Thread Michał Marczyk
Use pr-str:

user= (str (lazy-seq (list 1 2 3)))
clojure.lang.LazySeq@7861
user= (pr-str (lazy-seq (list 1 2 3)))
(1 2 3)

Cheers,
Michał


On 15 May 2014 16:29, Phillip Lord phillip.l...@newcastle.ac.uk wrote:


 I am trying to dump a representation of the contents of a list to file.
 I've recently changed how I generated this list and it's now lazy (not really
 by design more by side-effect, if you will excuse the poor choice of words).

 I was using

 (spit file (str lst \n))

 which worked quite nicely, but now it is failing. The problem is that I get a
 file full of clojure.lang.LazySeq@ lines. The problem comes from LazySeq
 directly, as this demonstration with range shows.

 user (str (list 1 2 3 4 5 ))
 (1 2 3 4 5)
 user (str (range 4))
 clojure.lang.LazySeq@e1b83
 user (println (range 4))
 (0 1 2 3)
 nil


 println is using prn and a multimethod to print out. In fact,
 clojure.lang.LazySeq doesn't implement toString, nor does it's super class.

 The best solution that I have come up with so far is to do

 (str (apply list (range 4)))

 I guess I can see why LazySeq doesn't implement toString by printing
 everything out, but is there a better way around my problem?

 Phil

 --
 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/d/optout.

-- 
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/d/optout.