May or may not be related, but calling *count* on a lazy sequence eagerly
consumes the entire sequence.
On Sunday, March 24, 2013 2:35:35 PM UTC+1, Jim foo.bar wrote:
>
> the operation is 'ngrams*' which doesn't care about what objects it
> finds in the seq...Typically you'd have characters or word ngrams but that
> doesn't mean you can't have any type of object...it simply doesn't care...
>
> (defn ngrams*
> "Create ngrams from a seq s.
> Pass a single string for character n-grams or a seq of strings for word
> n-grams."
> [s n]
> (when (>= (count s) n)
> (lazy-seq
> (cons (take n s) (ngrams* (next s) n)))))
>
> I cannot get the ngrams from the second case but yes they should be
> different (e.g. not=) but the final coll should be of the same size in both
> cases and should terminate in the same time...
>
> Jim
>
>
> On 24/03/13 13:22, Marko Topolnik wrote:
>
> What do you mean by "performing the same operation"? How can you perform
> the same operation on completely different objects? Do you mean that you
> don't have the exact same *ngrams** in the first and second case?
>
> On Sunday, March 24, 2013 1:45:37 PM UTC+1, Jim foo.bar wrote:
>>
>> Hi everyone,
>>
>> I'm experiencing some odd behaviour that I cannot justify so I thought
>> someone smarter can help here...
>>
>> I'm reading in a file with 39,7226 lines, each one containing a token-tag
>> pair (e.g. The/DET). This gives me 39,7226 fully-realized TokenTagPair
>> objects (records-> TokenTagPair{:token "The", :tag "DET"}).
>> Let's call them 'tt-pairs'. Now, I've got a function that takes n-grams
>> from a seq lazily. If I first extract all the tags and pass them to ngrams
>> then all is fine:
>>
>> (def tags (mapv :tag tt-pairs)) ;;all the 39,7226 tags
>> (def ntags (doall (ngrams* tags 2))) ;;returns quickly
>> => (last ntags)
>> ("N" "P")
>>
>> * HOWEVER,*
>>
>> (def ntt-pairs (doall (ngrams* tt-pairs 2))) ;hangs forever!
>>
>> one of my cpus is busy but nothing happens!!! How is this justified? *both
>> collections are of the same size and I'm performing the same operation on
>> them*...
>> the only difference is that 'tags' contains String objects whereas
>> 'tt-pairs' contains TokenTagPair objects... weird stuff, yes?
>>
>>
>> any ideas anyone?
>>
>> Jim
>>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to [email protected] <javascript:>
> 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] <javascript:>
> 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 [email protected] <javascript:>.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
>
--
--
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
---
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.