Re: destructuring let and for

2014-06-11 Thread Francesco Lunelli
Thanks for the answer, I'll try to do as you suggest.

Thanks

On Tuesday, June 10, 2014 11:51:59 PM UTC+2, Paul G wrote:

 Hi Francesco,

 I apologize for using for earlier, as I did not explain how you should 
 be using it. The comment of do something with rel should have indicated 
 that it resolved to an expression, and those expressions would be returned 
 in a seq (the for expression resolves to have a value of a seq).

 Given your last example, I could read it a couple of ways. My first 
 interpretation is that you just need a way to convert names to nodes, and 
 then to connect all the nodes. My preference would be to separate these 
 steps, so the conversion would be done with:

 (map convert-to-node list-of-names)

 The result of this is then looped through to create the relations (as in 
 my previous example, the relations are both ways, and not reflexive):

 (let [nodes (map convert-to-node list-of-names)]
   (for [node1 nodes, node2 nodes :when (not= node1 node2)]
 (nrl/create conn page1 page2 :links)))

 This creates a seq of all the relations, in both directions. So one 
 relationship will be [Jupiter-Pluto] and another will be [Pluto-Jupiter]. 
 To create one-way relationships, I suggest the use of indexes, as in my 
 previous post.

 However, when I followed your link to the example data, I see that there 
 are connections between some nodes and not others. In that case it would be 
 preferable to create a mapping of names to nodes, and then as the 
 relationships are required those nodes can be found easily:

 (def create-nodemap [names]
   (zipmap names (map convert-to-node names)))

 Now you can grab the nodes as needed to work with them:

 (defn connect [nodemap name1 name2]
   (nrl/create conn (nodemap name1) (nodemap name2 :link)))

 (let [nodemap (create-nodemap [jupiter hercules neptune pluto])]
   (connect nodemap jupiter hercules :link)
   (connect nodemap jupiter neptune :link)
   (connect nodemap jupiter pluto :link)
   (connect nodemap neptune pluto :link))

 I am avoiding many tricks here that I'd use in reality, to avoid making it 
 too obscure.

 Note that the above has links between Juptier, Neptune and Pluto, but 
 Hercules is only linked to Jupiter. So we don't have everything connected 
 to everything else. However, this approach is only useful in simple 
 examples like this, since any real data set would be too large to write 
 code for every connection. Instead, the actual data (coming from a csv 
 file, or something) would be read and used to create the connections.

 What does your original data look like? Are you just trying to re-create 
 the graph you linked to, or is the data available in some structured format?

 Paul



 On Tue, Jun 10, 2014 at 4:08 PM, Francesco Lunelli francesc...@gmail.com 
 javascript: wrote:

 Thanks for the answer.
 If I understand well your code it's a partial answer to my question 
 because if I'm not wrong it creates a link between to elements at a time. 
 What I need is to create all the elements then create on them every kind of 
 relation.
 I take as example a graph db used in another engine 
 https://raw.githubusercontent.com/wiki/thinkaurelius/titan/images/graph-of-the-gods-2.png
 Here you have a graph of Roman gods, with the name of the gods and the 
 links among them. So if I have for example a list of the names of Roman 
 gods I need to create all the nodes, then connect them in various mode.
 I want to take the list '(jupiter saturn hercules neptune pluto 
 ...) and cycling on it I want to creare the nodes. When I finished to 
 create them I need to be able to call every node to crete the various links 
 among them. For example I need to link jupiter with pluto, jupiter with 
 neptun, neptun with pluto and so on.

 Thanks

 Francesco 


 On Tuesday, June 10, 2014 7:43:21 PM UTC+2, Paul G wrote:

 Hi Francesco,

 You want to decouple your code from the data that it is operating on, so 
 your code can operate regardless of the contents of the list. Otherwise, 
 you'll need code that matches the list, in which case it could all be code 
 anyway. Operating on arbitrary lists makes it easy to test simple examples 
 too.

 A simple way to create links between pages might be like this (assuming 
 that conn is in scope and initialized):

 (for [list-elt1 the-list, list-elt2 the-list :when (not= list-elt1 
 list-elt2)]
   (let [page1 (page-fn list-elt1)
 page2 (page-fn list-elt2)
 rel (nrl/create conn page1 page2 :links)]
   ;; do something with rel
   ))

 This creates links both ways.

 If you only want one-way links then the first approach that comes to 
 mind (there are others, and they're probably better) is to index through 
 the seq:

 (for [n (range (count the-list)), m (range (inc n) (count the-list))]
   (let [page1 (page-fn (nth the-list n))
 page2 (page-fn (nth the-list m))
 rel (nrl/create conn page1 page2 :links)]
   ;; do something with rel
   ))

 The general idea here is to use an 

destructuring let and for

2014-06-10 Thread Francesco Lunelli
Hello everybody, I have a newbie question about destructuring and assigning 
and didn't find an answer in documentation or books.

I have a list that contains an arbitrary number of elements for example 
'(one two three ...) I now only that elements are strings.

I need to to take every element and use it as the name of a variable inside 
a let and assign the result of a funcion on that element to that variable.
Somthing like this for example:

(let [one  (clojure.string/capitalize one)
  two (clojure.string/capitalize two)
  three (clojure.string/capitalize three)]
 ;; here I have access to vars one two three etc. 
  )
  
where the names of the vars are taken from the list and values are obtained 
applying a function on the corresponding element of the list (the 
capitalize function il only an example, it could be everything else).

If I do in this way 
(for [word [the quick brown fox]] (let [word 
(clojure.string/capitalize word)] (prn word)))
it works, but I need to access the variables outside of the cycle for, 
after having defined and assigned everyone because I need to put in 
relation some of them.

Thanks to everybody

Francesco

 

-- 
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: destructuring let and for

2014-06-10 Thread James Reeves
Could you explain a little more what your end goal is?

It sounds like you want a map, but without knowing more about the purpose,
it's difficult to say.

- James


On 10 June 2014 16:43, Francesco Lunelli francesco.lune...@gmail.com
wrote:

 Hello everybody, I have a newbie question about destructuring and
 assigning and didn't find an answer in documentation or books.

 I have a list that contains an arbitrary number of elements for example
 '(one two three ...) I now only that elements are strings.

 I need to to take every element and use it as the name of a variable
 inside a let and assign the result of a funcion on that element to that
 variable.
 Somthing like this for example:

 (let [one  (clojure.string/capitalize one)
   two (clojure.string/capitalize two)
   three (clojure.string/capitalize three)]
  ;; here I have access to vars one two three etc.
   )

 where the names of the vars are taken from the list and values are
 obtained applying a function on the corresponding element of the list (the
 capitalize function il only an example, it could be everything else).

 If I do in this way
 (for [word [the quick brown fox]] (let [word
 (clojure.string/capitalize word)] (prn word)))
 it works, but I need to access the variables outside of the cycle for,
 after having defined and assigned everyone because I need to put in
 relation some of them.

 Thanks to everybody

 Francesco



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


Re: destructuring let and for

2014-06-10 Thread Francesco Lunelli
Thanks for the answer, I try to explain better what I have to do.

I need to create some nodes in Neo4j then I need to create relationships 
between those nodes.

This is an example taken from necons doc.

(let [conn  (nr/connect http://localhost:7474/db/data/;)
page1 (nn/create conn {:url http://clojurewerkz.org})
page2 (nn/create conn {:url http://clojureneo4j.info})
;; a relationship that indicates that page1 links to page2
rel   (nrl/create conn page1 page2 :links)]
(println rel)))

They create two nodes called page1 and pag2 then connect them.

In my case I have a list of names, I want to create one node for each of 
them with the possibility to work on nodes after they are created.
So if I have for example  a list like this one (def mylist '(jjohn paul 
mary)) I want to create three nodes calling them john paul and mary 
storing the value John Paul Mary and after having created them I want 
to be albe to connect nodes creating a relationship among them, with a 
funciont like   rel   (nrl/create conn john paul :friend)]

I hope this example explain better my needs.

Thanks in advance

Francesco


On Tuesday, June 10, 2014 6:11:16 PM UTC+2, James Reeves wrote:

 Could you explain a little more what your end goal is?

 It sounds like you want a map, but without knowing more about the purpose, 
 it's difficult to say.

 - James


 On 10 June 2014 16:43, Francesco Lunelli francesc...@gmail.com 
 javascript: wrote:

 Hello everybody, I have a newbie question about destructuring and 
 assigning and didn't find an answer in documentation or books.

 I have a list that contains an arbitrary number of elements for example 
 '(one two three ...) I now only that elements are strings.

 I need to to take every element and use it as the name of a variable 
 inside a let and assign the result of a funcion on that element to that 
 variable.
 Somthing like this for example:

 (let [one  (clojure.string/capitalize one)
   two (clojure.string/capitalize two)
   three (clojure.string/capitalize three)]
  ;; here I have access to vars one two three etc. 
   )
   
 where the names of the vars are taken from the list and values are 
 obtained applying a function on the corresponding element of the list (the 
 capitalize function il only an example, it could be everything else).

 If I do in this way 
 (for [word [the quick brown fox]] (let [word 
 (clojure.string/capitalize word)] (prn word)))
 it works, but I need to access the variables outside of the cycle for, 
 after having defined and assigned everyone because I need to put in 
 relation some of them.

 Thanks to everybody

 Francesco

  

  -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com 
 javascript:
 Note that posts from new members are moderated - please be patient with 
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com javascript:
 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+u...@googlegroups.com javascript:.
 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.


Re: destructuring let and for

2014-06-10 Thread Paul Gearon
Hi Francesco,

You want to decouple your code from the data that it is operating on, so
your code can operate regardless of the contents of the list. Otherwise,
you'll need code that matches the list, in which case it could all be code
anyway. Operating on arbitrary lists makes it easy to test simple examples
too.

A simple way to create links between pages might be like this (assuming
that conn is in scope and initialized):

(for [list-elt1 the-list, list-elt2 the-list :when (not= list-elt1
list-elt2)]
  (let [page1 (page-fn list-elt1)
page2 (page-fn list-elt2)
rel (nrl/create conn page1 page2 :links)]
  ;; do something with rel
  ))

This creates links both ways.

If you only want one-way links then the first approach that comes to mind
(there are others, and they're probably better) is to index through the seq:

(for [n (range (count the-list)), m (range (inc n) (count the-list))]
  (let [page1 (page-fn (nth the-list n))
page2 (page-fn (nth the-list m))
rel (nrl/create conn page1 page2 :links)]
  ;; do something with rel
  ))

The general idea here is to use an arbitrary var to represent your list
elements and pages.

Does this address your issue?

Regards,
Paul



On Tue, Jun 10, 2014 at 1:04 PM, Francesco Lunelli 
francesco.lune...@gmail.com wrote:

 Thanks for the answer, I try to explain better what I have to do.

 I need to create some nodes in Neo4j then I need to create relationships
 between those nodes.

 This is an example taken from necons doc.

 (let [conn  (nr/connect http://localhost:7474/db/data/;)
 page1 (nn/create conn {:url http://clojurewerkz.org})
 page2 (nn/create conn {:url http://clojureneo4j.info})
 ;; a relationship that indicates that page1 links to page2
 rel   (nrl/create conn page1 page2 :links)]
 (println rel)))

 They create two nodes called page1 and pag2 then connect them.

 In my case I have a list of names, I want to create one node for each of
 them with the possibility to work on nodes after they are created.
 So if I have for example  a list like this one (def mylist '(jjohn
 paul mary)) I want to create three nodes calling them john paul and
 mary storing the value John Paul Mary and after having created them I
 want to be albe to connect nodes creating a relationship among them, with a
 funciont like   rel   (nrl/create conn john paul :friend)]

 I hope this example explain better my needs.

 Thanks in advance

 Francesco


 On Tuesday, June 10, 2014 6:11:16 PM UTC+2, James Reeves wrote:

 Could you explain a little more what your end goal is?

 It sounds like you want a map, but without knowing more about the
 purpose, it's difficult to say.

 - James


 On 10 June 2014 16:43, Francesco Lunelli francesc...@gmail.com wrote:

 Hello everybody, I have a newbie question about destructuring and
 assigning and didn't find an answer in documentation or books.

 I have a list that contains an arbitrary number of elements for example
 '(one two three ...) I now only that elements are strings.

 I need to to take every element and use it as the name of a variable
 inside a let and assign the result of a funcion on that element to that
 variable.
 Somthing like this for example:

 (let [one  (clojure.string/capitalize one)
   two (clojure.string/capitalize two)
   three (clojure.string/capitalize three)]
  ;; here I have access to vars one two three etc.
   )

 where the names of the vars are taken from the list and values are
 obtained applying a function on the corresponding element of the list (the
 capitalize function il only an example, it could be everything else).

 If I do in this way
 (for [word [the quick brown fox]] (let [word
 (clojure.string/capitalize word)] (prn word)))
 it works, but I need to access the variables outside of the cycle for,
 after having defined and assigned everyone because I need to put in
 relation some of them.

 Thanks to everybody

 Francesco



  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@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+u...@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+u...@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
 

Re: destructuring let and for

2014-06-10 Thread Francesco Lunelli
Thanks for the answer.
If I understand well your code it's a partial answer to my question because 
if I'm not wrong it creates a link between to elements at a time. What I 
need is to create all the elements then create on them every kind of 
relation.
I take as example a graph db used in another 
engine 
https://raw.githubusercontent.com/wiki/thinkaurelius/titan/images/graph-of-the-gods-2.png
Here you have a graph of Roman gods, with the name of the gods and the 
links among them. So if I have for example a list of the names of Roman 
gods I need to create all the nodes, then connect them in various mode.
I want to take the list '(jupiter saturn hercules neptune pluto 
...) and cycling on it I want to creare the nodes. When I finished to 
create them I need to be able to call every node to crete the various links 
among them. For example I need to link jupiter with pluto, jupiter with 
neptun, neptun with pluto and so on.

Thanks

Francesco 


On Tuesday, June 10, 2014 7:43:21 PM UTC+2, Paul G wrote:

 Hi Francesco,

 You want to decouple your code from the data that it is operating on, so 
 your code can operate regardless of the contents of the list. Otherwise, 
 you'll need code that matches the list, in which case it could all be code 
 anyway. Operating on arbitrary lists makes it easy to test simple examples 
 too.

 A simple way to create links between pages might be like this (assuming 
 that conn is in scope and initialized):

 (for [list-elt1 the-list, list-elt2 the-list :when (not= list-elt1 
 list-elt2)]
   (let [page1 (page-fn list-elt1)
 page2 (page-fn list-elt2)
 rel (nrl/create conn page1 page2 :links)]
   ;; do something with rel
   ))

 This creates links both ways.

 If you only want one-way links then the first approach that comes to mind 
 (there are others, and they're probably better) is to index through the seq:

 (for [n (range (count the-list)), m (range (inc n) (count the-list))]
   (let [page1 (page-fn (nth the-list n))
 page2 (page-fn (nth the-list m))
 rel (nrl/create conn page1 page2 :links)]
   ;; do something with rel
   ))

 The general idea here is to use an arbitrary var to represent your list 
 elements and pages.

 Does this address your issue?

 Regards,
 Paul



 On Tue, Jun 10, 2014 at 1:04 PM, Francesco Lunelli francesc...@gmail.com 
 javascript: wrote:

 Thanks for the answer, I try to explain better what I have to do.

 I need to create some nodes in Neo4j then I need to create relationships 
 between those nodes.

 This is an example taken from necons doc.

 (let [conn  (nr/connect http://localhost:7474/db/data/;)
 page1 (nn/create conn {:url http://clojurewerkz.org})
 page2 (nn/create conn {:url http://clojureneo4j.info})
 ;; a relationship that indicates that page1 links to page2
 rel   (nrl/create conn page1 page2 :links)]
 (println rel)))

 They create two nodes called page1 and pag2 then connect them.

 In my case I have a list of names, I want to create one node for each of 
 them with the possibility to work on nodes after they are created.
 So if I have for example  a list like this one (def mylist '(jjohn 
 paul mary)) I want to create three nodes calling them john paul and 
 mary storing the value John Paul Mary and after having created them I 
 want to be albe to connect nodes creating a relationship among them, with a 
 funciont like   rel   (nrl/create conn john paul :friend)]

 I hope this example explain better my needs.

 Thanks in advance

 Francesco


 On Tuesday, June 10, 2014 6:11:16 PM UTC+2, James Reeves wrote:

 Could you explain a little more what your end goal is?

 It sounds like you want a map, but without knowing more about the 
 purpose, it's difficult to say.

 - James


 On 10 June 2014 16:43, Francesco Lunelli francesc...@gmail.com wrote:

 Hello everybody, I have a newbie question about destructuring and 
 assigning and didn't find an answer in documentation or books.

 I have a list that contains an arbitrary number of elements for example 
 '(one two three ...) I now only that elements are strings.

 I need to to take every element and use it as the name of a variable 
 inside a let and assign the result of a funcion on that element to that 
 variable.
 Somthing like this for example:

 (let [one  (clojure.string/capitalize one)
   two (clojure.string/capitalize two)
   three (clojure.string/capitalize three)]
  ;; here I have access to vars one two three etc. 
   )
   
 where the names of the vars are taken from the list and values are 
 obtained applying a function on the corresponding element of the list (the 
 capitalize function il only an example, it could be everything else).

 If I do in this way 
 (for [word [the quick brown fox]] (let [word 
 (clojure.string/capitalize word)] (prn word)))
 it works, but I need to access the variables outside of the cycle for, 
 after having defined and assigned everyone because I need to put in 

Re: destructuring let and for

2014-06-10 Thread Paul Gearon
Hi Francesco,

I apologize for using for earlier, as I did not explain how you should be
using it. The comment of do something with rel should have indicated that
it resolved to an expression, and those expressions would be returned in a
seq (the for expression resolves to have a value of a seq).

Given your last example, I could read it a couple of ways. My first
interpretation is that you just need a way to convert names to nodes, and
then to connect all the nodes. My preference would be to separate these
steps, so the conversion would be done with:

(map convert-to-node list-of-names)

The result of this is then looped through to create the relations (as in my
previous example, the relations are both ways, and not reflexive):

(let [nodes (map convert-to-node list-of-names)]
  (for [node1 nodes, node2 nodes :when (not= node1 node2)]
(nrl/create conn page1 page2 :links)))

This creates a seq of all the relations, in both directions. So one
relationship will be [Jupiter-Pluto] and another will be [Pluto-Jupiter].
To create one-way relationships, I suggest the use of indexes, as in my
previous post.

However, when I followed your link to the example data, I see that there
are connections between some nodes and not others. In that case it would be
preferable to create a mapping of names to nodes, and then as the
relationships are required those nodes can be found easily:

(def create-nodemap [names]
  (zipmap names (map convert-to-node names)))

Now you can grab the nodes as needed to work with them:

(defn connect [nodemap name1 name2]
  (nrl/create conn (nodemap name1) (nodemap name2 :link)))

(let [nodemap (create-nodemap [jupiter hercules neptune pluto])]
  (connect nodemap jupiter hercules :link)
  (connect nodemap jupiter neptune :link)
  (connect nodemap jupiter pluto :link)
  (connect nodemap neptune pluto :link))

I am avoiding many tricks here that I'd use in reality, to avoid making it
too obscure.

Note that the above has links between Juptier, Neptune and Pluto, but
Hercules is only linked to Jupiter. So we don't have everything connected
to everything else. However, this approach is only useful in simple
examples like this, since any real data set would be too large to write
code for every connection. Instead, the actual data (coming from a csv
file, or something) would be read and used to create the connections.

What does your original data look like? Are you just trying to re-create
the graph you linked to, or is the data available in some structured format?

Paul



On Tue, Jun 10, 2014 at 4:08 PM, Francesco Lunelli 
francesco.lune...@gmail.com wrote:

 Thanks for the answer.
 If I understand well your code it's a partial answer to my question
 because if I'm not wrong it creates a link between to elements at a time.
 What I need is to create all the elements then create on them every kind of
 relation.
 I take as example a graph db used in another engine
 https://raw.githubusercontent.com/wiki/thinkaurelius/titan/images/graph-of-the-gods-2.png
 Here you have a graph of Roman gods, with the name of the gods and the
 links among them. So if I have for example a list of the names of Roman
 gods I need to create all the nodes, then connect them in various mode.
 I want to take the list '(jupiter saturn hercules neptune pluto
 ...) and cycling on it I want to creare the nodes. When I finished to
 create them I need to be able to call every node to crete the various links
 among them. For example I need to link jupiter with pluto, jupiter with
 neptun, neptun with pluto and so on.

 Thanks

 Francesco


 On Tuesday, June 10, 2014 7:43:21 PM UTC+2, Paul G wrote:

 Hi Francesco,

 You want to decouple your code from the data that it is operating on, so
 your code can operate regardless of the contents of the list. Otherwise,
 you'll need code that matches the list, in which case it could all be code
 anyway. Operating on arbitrary lists makes it easy to test simple examples
 too.

 A simple way to create links between pages might be like this (assuming
 that conn is in scope and initialized):

 (for [list-elt1 the-list, list-elt2 the-list :when (not= list-elt1
 list-elt2)]
   (let [page1 (page-fn list-elt1)
 page2 (page-fn list-elt2)
 rel (nrl/create conn page1 page2 :links)]
   ;; do something with rel
   ))

 This creates links both ways.

 If you only want one-way links then the first approach that comes to mind
 (there are others, and they're probably better) is to index through the seq:

 (for [n (range (count the-list)), m (range (inc n) (count the-list))]
   (let [page1 (page-fn (nth the-list n))
 page2 (page-fn (nth the-list m))
 rel (nrl/create conn page1 page2 :links)]
   ;; do something with rel
   ))

 The general idea here is to use an arbitrary var to represent your list
 elements and pages.

 Does this address your issue?

 Regards,
 Paul



 On Tue, Jun 10, 2014 at 1:04 PM, Francesco Lunelli francesc...@gmail.com
  wrote:

 Thanks for the