Hi everybody, I was implementing a skip list, just for fun.
I implemented the list and just to be sure that it were working I wanted to count how many steps it compute to find a value. SkipList --> http://en.wikipedia.org/wiki/Skip_list To do so I was using a atom, and the code looks like this: (def c (atom 0)) > > (defn search-n-count [s n] > (letfn [(search-fn [s n] > (reset! c 0) ;; I restart to count > (loop [s s] > (swap! c inc) ;; add a passage to the counter > (when (seq s) > (let [v (first s)] > (cond > (> v n) false > (== v n) n > (< v n) (recur (rest s)))))))] > [(take 1 (drop-while #(or (false? %1) (nil? %1)) (map search-fn s > (repeat n)))) @c])) ;;the take and everything looks horrible, but I didn't > find anything better, any ideas ? However the value that I get simply doesn't makes any sense, sometimes it looks like I get a value that could refer to the previous computation... Where is the problem ? If you don't get the code I can comment better the code, just let me know... Here the whole code and some example: https://gist.github.com/4497077 Thanks for any help :-) Simone -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en
