Re-read your example - that should have been;

(let [updated-val (loop [updateable 0 line (.readline reader)]
   (if (or (empty? line) (> line-num max-num))
     (+ updateable (somefunc))
     (recur (.readLine reader)))))]
 (do-something-with updated-val))

I.e initialising updateable to 0.


On Thu, Jun 11, 2009 at 8:38 PM, Adrian
Cuthbertson<adrian.cuthbert...@gmail.com> wrote:
> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to