Hello,all

new to functional programming, I have one nested dynamic vecter just
like this:

(def a [[1 2 3 4] ["ok" 89 22] [25 78 99] ...]]

it has to support ops:
1*   add new item,it's easy: eg. (conj   a  ["metoo" "oops"] )
2*  insert one element  into inner vector based that vector's
content,eg  i have to append 50 in inner vectors which includes 99.
the result  is [[1 2 3 4] ["ok 89 22] [25 78 99 50]...]
3*  merge inner vectors in a , eg. if there are same elements in
inner vectors , they should be merged and delete same elements.
 [[1 2 3 4] [ "ok" 89 22] [ 5 6 7 2 ]...] -> [[1 2 3 4 5 6 7] ["ok" 89
22]]


to 2,  i use zipper :
(defn append-to-blocks [x y] ;lookup x in blocks,if found then add y
to that inner block
   (loop [loc dz]            ;dz is zip/vector-zip blocks
     (if (zip/end? loc)
       (zip/root loc)
       (recur
        (zip/next
         (if (and (vector? (zip/node loc)) (includes? (zip/node loc) x))
           (let [new-coll (conj (zip/node loc) y)]
           (zip/replace loc new-coll))
           loc))))))
though work, but it should have better solution.

to 3, i have not figure out one good way  to do it.

any libs could help me, or any ideas?

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

Reply via email to