On 28 October 2013 05:23, Jiaqi Liu <liujiaq...@gmail.com> wrote:

>> 2013/10/28 Jiaqi Liu <liujiaq...@gmail.com>
>>>
>>> i really don't get it.
>>> Any suggestion??
>>
>>
>> Clojure data structures are immutable. clojure.core/assoc
>> produces a new data structure instead of changing the one you have.
>>
>> You can use an atom if you need to update a map from doseq
>> but more likely you want to use the actual value assoc returns
>> and/or clojure.core functions for manipulating collections,
>> such as clojure.core/reduce.
>>
>> See http://clojure-doc.org/articles/language/core_overview.html,
>> http://clojure-doc.org/articles/language/collections_and_sequences.html
>> and
>> http://clojure-doc.org/articles/language/concurrency_and_parallelism.html
>> --
>> MK
>>
>> http://github.com/michaelklishin
>> http://twitter.com/michaelklishin
>
> Thanks for your suggests~
> The above piece of code is just for test.
>
> The practical problem i want to solve is that
> -->read a very big log file (each line is like that : "user id, latitude,
> longitude, timeStamp")
> -->statistic the number of each user (store in a map like that { id1 100 ,
> id2 200, id3 150 ....})
> -->sorted the map by values and get the top-N user id
>
> the main code of the former 2 steps is :
> ....
> (let [ id-num {} ]    ;;as your suggestion , here should use atom
>    (with-open [rdr   (the file...)]
>       (doseq  [line (line-seq rdr)]
>          (let [params    (split each line with "," ....)
>                 id   (params 0)]
>                (if  (id-num id)
>                     (do  inc the value ....)
>                     (do  add new  k-v ....)))))
> )
> ...
> I don't want to load the total file into memory, too big.
> So referencing the suggestion from internet , i am using line-seq & doseq to
> deal with the big log file lazily.
> Is that right way to use clojue to deal this problem?
>
> Any suggestions will be grateful!!!

doseq isn't lazy and it doesn't return anything, it is meant to be
used solely for side effects.

for returns a lazy sequence.

See http://clojuredocs.org/clojure_core.

Alan

-- 
-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to