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 <[email protected]>

> 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 <[email protected]>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 [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.
>>
>>
>>
>
>  --
> --
> 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.
>
>
>

-- 
-- 
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.


Reply via email to