Also It looks like you could use reify instead of proxy here, it would 
improve performance. 

http://clojuredocs.org/clojure_core/clojure.core/reify

- Max

On Thursday, February 14, 2013 3:26:02 PM UTC+1, Ulises wrote:
>
> Without testing or anything that looks reasonable enough. I'm sure that 
> there are plenty caveats around infinite seqs, etc. though.
>
>
> On 14 February 2013 14:22, Joachim De Beule 
> <joachim....@gmail.com<javascript:>
> > wrote:
>
>> Thanks! So you mean like this (assuming some function elt->event):
>>
>> (defn seq->event-stream [input-seq]
>>   (let [remaining (atom input-seq)]
>>     (proxy [EventStream] []
>>       (next [] (let [current (first @remaining)]
>>                     (swap! remaining rest)
>>                     (elt->event current)))
>>       (hasNext [] (not (empty? @remaining))))))
>>
>>
>>
>> 2013/2/14 Ulises <ulises....@gmail.com <javascript:>>
>>
>>> How about having your methods access an atom provided in a closure like 
>>> it's done here: 
>>> http://kotka.de/blog/2010/03/proxy_gen-class_little_brother.html
>>>
>>> U
>>>
>>>
>>> On 14 February 2013 13:58, Joachim De Beule 
>>> <joachim....@gmail.com<javascript:>
>>> > wrote:
>>>
>>>> Hi All,
>>>>
>>>> I want to turn a clojure sequence into an 'EventStream' java interface 
>>>> in clojure (see 
>>>> http://opennlp.apache.org/documentation/1.5.2-incubating/apidocs/opennlp-maxent/index.html).
>>>>  
>>>> Basically this is an object that implements next() and hasNext() methods.
>>>>
>>>> I know this can be done with proxy:
>>>>
>>>> (proxy [EventStream] []
>>>>    (hasNext [] ...)
>>>>    (next [] (Event. ...) ...))
>>>>
>>>> What I am not sure about is how to deal with state. More precisely, the 
>>>> object returned by the above call to proxy obviously must somehow keep a 
>>>> pointer to the current position in the input sequence and increment the 
>>>> index after a call to next() etc.
>>>>
>>>> Any ideas on how to best do something like this?
>>>>
>>>> Thanks a lot!
>>>> Joachim. 
>>>>    
>>>>
>>>> -- 
>>>> -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+u...@googlegroups.com <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 clojure+u...@googlegroups.com <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 clo...@googlegroups.com<javascript:>
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com <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 clojure+u...@googlegroups.com <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 clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <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 clojure+u...@googlegroups.com <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 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