How about using the clojure sequence functions? (require '[clojure.contrib.seq-utils :as seq-utils]) (defn last-index-of [c string] (first (seq-utils/find-first (fn [[_ a]] (= a c)) (reverse (seq-utils/indexed string))))) P.S. Jong Won, how are you liking Clojure? I've met you in Parramatta and joined the ADO team :) Nice to have you on the group here :) Cheers Andreas
On Nov 13, 6:54 pm, Andreas Kostler <andreas.koest...@leica- geosystems.com> wrote: > How about using the clojure sequence functions? > (require '[clojure.contrib.seq-utils :as seq-utils]) > > (defn last-index-of [c string] > (first (seq-utils/find-first (fn [[_ a]] (= a c)) (reverse > (seq-utils/indexed string))))) > > P.S. Jong Won, how are you liking Clojure? I've met you in Parramatta > and joined the ADO team :) Nice to have you on the group here :) > > Cheers > Andreas > > On 13 November 2011 10:19, Tyler Perkins <thinks.outsrst (i...@gmail.com> > wrote: > > > > > > > > > Interesting. I never knew how to use areduce before. However, it > > always scans the entire array. If you had a very long string (or other > > collection), it might be better to scan backwards: > > > user> (defn last-indexof [cs c] > > (loop [n (dec (count cs))] > > (if (and (<= 0 n) (not= c (nth cs n))) > > (recur (dec n)) > > n))) > > #'user/last-indexof > > user> (last-indexof "aabbccd" \c) > > 5 > > user> (last-indexof "aabbccd" \x) > > -1 > > >> areduce can be used too. > > >> (defn last-indexof [cs c] > >> (areduce cs i lst-idx -1 > >> (if (= c (aget cs i)) i lst-idx))) > > >> (-> "aabbccd" to-array (last-indexof \c)) > > >> Regards. > >> Jestan Nirojan > > > -- > > 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