Re: Arrays and indexes

2013-04-19 Thread John D. Hume
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

2013-04-19 Thread https://github.com/jmaandrade/orchestration

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

2013-04-19 Thread edward
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

2013-04-18 Thread Alan Malloy
(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

2013-04-18 Thread edward
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.