title: How can I maintain single copy of a 2d vector in clojure
body: <p>I want to maintain a single copy of vector in whole class. I have to update vector many times in recursion.</p>
  
  <pre><code> ;this is to update cell in vector
  (defn to-plus [data x y]
   (update data y (fn [row] (apply str (assoc (vec row) x \+)))))
  
  ;here i am getting values in board and calling to-plus to update board
  ;now i need to maintain a single copy of board
  (let [board (read-in-board "map.txt")]
  (print-maze board)
  (println(str (get-in board [1 4])))
  (print-maze (to-plus board 1 4))
  (println(to-plus board 1 4))) 
  </code></pre>
  
  <p>I am trying to solve maze problem using recursion and random walk. I am new to Clojure.</p>
  
  <pre><code>;Data is of type 
  ---#--###----
  -#---#----##-
  ####-#-#-#-##
  ---#---#-#---
  -+-####---##-
  -#------#----
  -############
  ------------@
  </code></pre>