Yes, pmap behaves as map with respect to the ordering of the elements of the resulting sequence.
// ben On Sat, Aug 11, 2012 at 9:29 PM, Jim - FooBar(); <jimpil1...@gmail.com> wrote: > Hi all, > > I was wondering what assumptions does pmap take with regards to the ordering > of the resulting seq? Can I assume it retains the original ordering or does > it just cons whatever future returns earlier? In other words can I do this > and feel safe? > ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > (defn min-max [root? depth dir board] > (if (zero? depth) (score b) ;reached bottom level - evaluate board > (let [mapper (if root? 'pmap 'map) ;if at root-node create futures > team (filter #(= dir (:direction %)) board) ;all the team-mates > (with same direction) > successors (concat (map #(core/getMoves %) team)) ;concat all > potential moves > result (->> successors > (map core/try-move) ;try them all (producing boards) > (mapper (partial min-max false (dec depth) (- dir))))];pass the > resulting boards back to recursion with direction inverted > (get (vec successors) > (.indexOf result (apply max result)))))) > > (def search (partial min-max true)) > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > It seems to me like a very succinct and idiomatic way to implement the > min-max algorithm, the only problem is this line: > (get (vec successors) (.indexOf result (apply max result))) > > It assumes that the initial ordering of moves ('successors') has been > preserved throughout the recursion and so I can use .indexOf to go from the > score back to the move that started it all! Is this the case? I am > suspecting not! any suggestions? > > Thanks in advance, > > > Jim > > -- > 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 -- 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