I need to define mutually-dependent vars. By this I mean that one var contains e.g. a vector with another var and vice versa. This is illustrated by the following code:
(declare a b)
(def a [1 b])
(def b [a 2])
But after loading this code I get this:
test=> (first a)
1
test=> (second a)
#<Unbound Unbound: #'test/b>
test=> (first b)
[1 #<Unbound Unbound: #'test/b>]
test=> (second b)
2
clearly, thats not how it should work.
I understand that printing such structure will give stack overflow, but I don’t need to print it. How should I do it?
You can do the following:
Note that
#'is a reader macro for referring to a var.I’m still not quite sure why you want to do this though….. trying to make vars mutually dependent like this seems like a pretty bad code smell to me. It’s likely that whatever you are trying to do would actually be best solved by a different approach.
EDIT
With the extra comment stating that the problem is related to having different types of entities referring to each other, I think a better approach is a map with keywords, e.g.