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<[email protected]> 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 <[email protected]>
> wrote:
>>
>>
>>
>> On Jun 11, 12:16 pm, Daniel Lyons <[email protected]> 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 [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
-~----------~----~----~----~------~----~------~--~---