doall vs. dorun

2009-01-20 Thread Mark Volkmann

Can someone describe a situation where it is preferable to use doall
instead of dorun? I see in the documentation that it retains the head
and returns it, thus causing the entire seq to reside in memory at one
time, but I'm not sure why I'd want that.

-- 
R. Mark Volkmann
Object Computing, Inc.

--~--~-~--~~~---~--~~
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
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: doall vs. dorun

2009-01-20 Thread Nathanael Cunningham
Pretty much any lazy-seq thats reading data from somewhere that might give
up on you if you take to long. For example: Your using line-seq to read from
a socket, but the sequence wont be read through until the user does
something.

On Tue, Jan 20, 2009 at 3:32 PM, Mark Volkmann r.mark.volkm...@gmail.comwrote:


 Can someone describe a situation where it is preferable to use doall
 instead of dorun? I see in the documentation that it retains the head
 and returns it, thus causing the entire seq to reside in memory at one
 time, but I'm not sure why I'd want that.

 --
 R. Mark Volkmann
 Object Computing, Inc.

 



-- 
-Nate

--~--~-~--~~~---~--~~
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
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: doall vs. dorun

2009-01-20 Thread Stuart Sierra

On Jan 20, 3:32 pm, Mark Volkmann r.mark.volkm...@gmail.com wrote:
 Can someone describe a situation where it is preferable to use doall
 instead of dorun?

Here's one:

(defn read-my-file []
  (with-open [reader (BufferedReader. (FileReader. my-file.txt))]
(doall (line-seq reader

line-seq returns a lazy sequence, but you have to consume that
sequence before with-open closes the file.

-Stuart Sierra
--~--~-~--~~~---~--~~
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
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: doall vs. dorun

2009-01-20 Thread Mark Triggs

In addition to what others have said, I also tend to use doall when
working with agent actions that return sequences (i.e. to force any
computation to happen in the agent's thread and not in the caller's)

Cheers,

Mark

On Wed, Jan 21, 2009 at 7:32 AM, Mark Volkmann
r.mark.volkm...@gmail.com wrote:

 Can someone describe a situation where it is preferable to use doall
 instead of dorun? I see in the documentation that it retains the head
 and returns it, thus causing the entire seq to reside in memory at one
 time, but I'm not sure why I'd want that.

 --
 R. Mark Volkmann
 Object Computing, Inc.

 


--~--~-~--~~~---~--~~
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
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: doall vs. dorun

2009-01-20 Thread Mark Volkmann

On Tue, Jan 20, 2009 at 3:14 PM, Stuart Sierra
the.stuart.sie...@gmail.com wrote:

 On Jan 20, 3:32 pm, Mark Volkmann r.mark.volkm...@gmail.com wrote:
 Can someone describe a situation where it is preferable to use doall
 instead of dorun?

 Here's one:

 (defn read-my-file []
  (with-open [reader (BufferedReader. (FileReader. my-file.txt))]
(doall (line-seq reader

 line-seq returns a lazy sequence, but you have to consume that
 sequence before with-open closes the file.

How is it different if you change doall to dorun? According to
their doc strings, they both can be used to force any effects. Walks
through the successive rests of the seq

-- 
R. Mark Volkmann
Object Computing, Inc.

--~--~-~--~~~---~--~~
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
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: doall vs. dorun

2009-01-20 Thread Stephen C. Gilardi


On Jan 20, 2009, at 5:32 PM, Mark Volkmann wrote:


Here's one:

(defn read-my-file []
(with-open [reader (BufferedReader. (FileReader. my-file.txt))]
  (doall (line-seq reader

line-seq returns a lazy sequence, but you have to consume that
sequence before with-open closes the file.


How is it different if you change doall to dorun? According to
their doc strings, they both can be used to force any effects. Walks
through the successive rests of the seq


Using doall will cause read-my-file to return a seq of all the lines.  
dorun will return nil.


Here's a simpler example:

user= (doall (map #(do (prn %) %) [1 2 3]))
1
2
3
(1 2 3)
user= (dorun (map #(do (prn %) %) [1 2 3]))
1
2
3
nil
user=

(Note the difference in return value.)

--Steve



smime.p7s
Description: S/MIME cryptographic signature


Re: doall vs. dorun

2009-01-20 Thread Cosmin Stejerean
On Tue, Jan 20, 2009 at 4:32 PM, Mark Volkmann r.mark.volkm...@gmail.comwrote:


 On Tue, Jan 20, 2009 at 3:14 PM, Stuart Sierra
 the.stuart.sie...@gmail.com wrote:
 
  On Jan 20, 3:32 pm, Mark Volkmann r.mark.volkm...@gmail.com wrote:
  Can someone describe a situation where it is preferable to use doall
  instead of dorun?
 
  Here's one:
 
  (defn read-my-file []
   (with-open [reader (BufferedReader. (FileReader. my-file.txt))]
 (doall (line-seq reader
 
  line-seq returns a lazy sequence, but you have to consume that
  sequence before with-open closes the file.

 How is it different if you change doall to dorun? According to
 their doc strings, they both can be used to force any effects. Walks
 through the successive rests of the seq


Use dorun when you want to do something purely for the side effects. If you
don't need what doall would return then you can use dorun instead to clearly
indicate your intent.

-- 
Cosmin Stejerean
http://offbytwo.com

--~--~-~--~~~---~--~~
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
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: doall vs. dorun

2009-01-20 Thread Mark Volkmann

Thanks Steve and Cosmin! I understand it now.

On Tue, Jan 20, 2009 at 4:53 PM, Stephen C. Gilardi squee...@mac.com wrote:

 On Jan 20, 2009, at 5:32 PM, Mark Volkmann wrote:

 Here's one:

 (defn read-my-file []
 (with-open [reader (BufferedReader. (FileReader. my-file.txt))]
  (doall (line-seq reader

 line-seq returns a lazy sequence, but you have to consume that
 sequence before with-open closes the file.

 How is it different if you change doall to dorun? According to
 their doc strings, they both can be used to force any effects. Walks
 through the successive rests of the seq

 Using doall will cause read-my-file to return a seq of all the lines. dorun
 will return nil.

 Here's a simpler example:

user= (doall (map #(do (prn %) %) [1 2 3]))
1
2
3
(1 2 3)
user= (dorun (map #(do (prn %) %) [1 2 3]))
1
2
3
nil
user=

 (Note the difference in return value.)

 --Steve





-- 
R. Mark Volkmann
Object Computing, Inc.

--~--~-~--~~~---~--~~
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
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
-~--~~~~--~~--~--~---