Re: Arrays and indexes
Both `for` and `doseq` support the same vector form preceding a body. `for` returns a lazy sequence and is often appropriate for a purely functional body. `doseq` is not lazy and returns nil, so it is only appropriate when you want to run the body for side effects. Take a look at http://clojure.github.io/clojure/clojure.core-api.html and play around in the repl to get a clearer idea of how that works. Maybe start with an expression like this: (let [nested [[1 2 3] [4 5 6]]] (for [row nested number row] (str number " from row " row))) If you change `for` to `doseq`, you may also want to change `str` to `println`. Alan's example uses `map-indexed` to get numeric indices. Note that `cols` holds a row from `rows` and is then passed to the second `map-indexed` call, so his example is like a nested for-loop in a C-like language, except that it is lazy and returns a sequence of results of calling `display` with each item from your nested vector along with its coordinates. For this example to make sense, `display` should return a value that will be used to put something on screen. If `display` just does the screen-putting, and its return value is insignificant, then `doseq` would make sense. Hope this helps. -hume. On Apr 19, 2013 4:27 AM, wrote: > How does that work: you appear to be iterating over two, unconnected, > vectors. > > And yes that's an example of the second option but doesn't explain if or > why that's the best approach- which was the question ;) > > On Thursday, 18 April 2013 19:48:40 UTC+1, Alan Malloy wrote: >> >> (for [[y cols] (map-indexed vector rows) >> [x cell] (map-indexed vector cols)] >> (display cell y x)) >> >> ? >> >> On Thursday, April 18, 2013 3:14:19 AM UTC-7, edw...@kenworthy.infowrote: >>> >>> So, I want a 2 dimensional array. >>> >>> I think the best way to implement this is a vector of vectors. >>> >>> Now I want to display that array drawing each element relative to its >>> position in the array. >>> >>> Is the best way to use doseq and manually maintain the indices? Or is it >>> to use nested for-loops manually iterating of the vector-of-vectors? >>> >> -- > -- > 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. > > > -- -- 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.
Re: Arrays and indexes
Hi, How about this? > (map-indexed (fn [i x] (vector x)) (for [x (range 10)] "HELLO WORLD")) (["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"] ["HELLO WORLD"]) Quinta-feira, 18 de Abril de 2013 11:14:19 UTC+1, edw...@kenworthy.info escreveu: > > So, I want a 2 dimensional array. > > I think the best way to implement this is a vector of vectors. > > Now I want to display that array drawing each element relative to its > position in the array. > > Is the best way to use doseq and manually maintain the indices? Or is it > to use nested for-loops manually iterating of the vector-of-vectors? > -- -- 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.
Re: Arrays and indexes
How does that work: you appear to be iterating over two, unconnected, vectors. And yes that's an example of the second option but doesn't explain if or why that's the best approach- which was the question ;) On Thursday, 18 April 2013 19:48:40 UTC+1, Alan Malloy wrote: > > (for [[y cols] (map-indexed vector rows) > [x cell] (map-indexed vector cols)] > (display cell y x)) > > ? > > On Thursday, April 18, 2013 3:14:19 AM UTC-7, edw...@kenworthy.info wrote: >> >> So, I want a 2 dimensional array. >> >> I think the best way to implement this is a vector of vectors. >> >> Now I want to display that array drawing each element relative to its >> position in the array. >> >> Is the best way to use doseq and manually maintain the indices? Or is it >> to use nested for-loops manually iterating of the vector-of-vectors? >> > -- -- 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.
Re: Arrays and indexes
(for [[y cols] (map-indexed vector rows) [x cell] (map-indexed vector cols)] (display cell y x)) ? On Thursday, April 18, 2013 3:14:19 AM UTC-7, edw...@kenworthy.info wrote: > > So, I want a 2 dimensional array. > > I think the best way to implement this is a vector of vectors. > > Now I want to display that array drawing each element relative to its > position in the array. > > Is the best way to use doseq and manually maintain the indices? Or is it > to use nested for-loops manually iterating of the vector-of-vectors? > -- -- 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.
Arrays and indexes
So, I want a 2 dimensional array. I think the best way to implement this is a vector of vectors. Now I want to display that array drawing each element relative to its position in the array. Is the best way to use doseq and manually maintain the indices? Or is it to use nested for-loops manually iterating of the vector-of-vectors? -- -- 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.