It is not so difficult to have references to objects in clojure; but, as a rule, these links are immutable. This is immutability, which makes a doubly linked list impossible, because, unlike a singly linked list, you cannot change any part of it without creating a mutation somewhere.
To see this, suppose I have a separate list,
a -> b -> c
and suppose I want to change his chapter. I can do this by changing the whole list. I create a new list, creating a new value for the head value and reuse the tail:
a'-> b -> c
But doubly linked lists are impossible. Therefore, in clojure and other functional languages, we sometimes use zipper in such situations.
, Clojure - ? , , concurrency, Clojure vars, refs, atoms ..
, deftype , . java Clojure .
? , , swizzling , .
, , B-, . , , - . -, , , - couchDB, . , - , . , . RethinkDB , IIRC.