You could do something like; (let [updated-val (loop [updateable start-value line (.readline reader)] (if (or (empty? line) (> line-num max-num)) (+ updateable (somefunc)) (recur (.readLine reader)))))] (do-something with updated-val))
Rgds, Adrian. On Thu, Jun 11, 2009 at 8:34 PM, David Nolen<dnolen.li...@gmail.com> wrote: > Why isn't the following satisfactory for your needs? get-value takes a value > returns a new value based on it. do-something can 'do something' to/with > this new value. > (defn get-value [start-value] > (loop [updateable start-value line (.readline reader)] > (if (or (empty? line) (> line-num max-num)) > (+ updateable (somefunc)) > (recur (.readLine reader))))) > (defn do-something [] > (let [updated-value (get-value 0)] > (println updated-value)) > On Thu, Jun 11, 2009 at 2:21 PM, Berlin Brown <berlin.br...@gmail.com> > wrote: >> >> >> >> On Jun 11, 12:16 pm, Daniel Lyons <fus...@storytotell.org> wrote: >> > On Jun 11, 2009, at 9:25 AM, BerlinBrown wrote: >> > >> > >> > >> > > I do this a lot but can't figure out to change the UPDATEABLE_VALUE, I >> > > am using some pseudo code because I don't have a clojure solution yet. >> > >> > > SET UPDATEABLE_VALUE = 0 >> > > (loop [line (.readLine reader)] >> > > (if (or (empty? line) (> line-num max-num)) >> > > SET UPDATEABLE_VALUE = UPDATEABLE_VALUE + (SOME_FUNC) >> > > (recur (.readLine reader)))) >> > >> > In general it's going to be something like this: >> > >> > (loop [line (.readLine reader) UPDATEABLE_VALUE 0] >> > (if (or (empty? line) (> line-num max-num)) >> > (recur (.readLine reader) (+ UPDATEABLE_VALUE (SOME_FUNC))))) >> > >> > Whenever you would have modified a local variable before, in FP you >> > establish a new binding instead. >> > >> > — >> > Daniel Lyonshttp://www.storytotell.org-- Tell It! >> >> I can modify the value within the loop, but what is a good approach >> for accessing the value outside of the loop. For example (pseudo code >> with a mix of procedural logic). >> >> ;; Init updateable value outside of 'loop' >> SET UPDATEABLE_VALUE = 0 >> (loop [line (.readLine reader)] >> (if (or (empty? line) (> line-num max-num)) >> SET UPDATEABLE_VALUE = UPDATEABLE_VALUE + (SOME_FUNC) >> (recur (.readLine reader)))) >> ;; Now outside of the loop, use UPDATEABLE_VALUE with the mutated >> value >> (println UPDATEABLE_VALUE) >> >> >> >> > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---