For using references in general, here is a little example:

[EMAIL PROTECTED]:~$ clj
Clojure
user=> (def foo (ref 0))
#'user/foo
user=> foo
#<Ref [EMAIL PROTECTED]>
user=> @foo
0
user=> (ref-set foo 1)
java.lang.IllegalStateException: No transaction running (NO_SOURCE_FILE:0)
user=> (dosync (ref-set foo 1))
1
user=> @foo
1
user=>


Notice that you have to wrap ref-set in a transaction using dosync, and 
reading the reference requires the @ macro.

-Jeff

Brian Doyle wrote:
> I am parsing a file and to compare the current line
> with the previous line of the file.  I am using line-seq
> to go thru the file and I thought I would create a
> ref to store the previous line.   When I want to update
> the previous line value I can't seem to do it.  I've
> never used refs before so I'm sure I'm doing something
> very stupid.  
> 
> (defstruct line :lat :lon :name)
> 
> (defn convert [file]
>   (let [prev-line (ref (struct line))]
>     (with-open [r (reader file)]
>        (doseq [l (line-seq r)]
>          (let [ps (split #"," l)
>                 c-line (struct line (ps 0) (ps 1) (ps 2))]
>            (if (not= c-line @pre-line)
>              (do ; do stuff here then update pre-line
>                 (dosync ref-set pre-line (apply struct line (vals c-line)))
>                 (println @pre-line))))))))  ; this prints out all nils 
> doesn't seem to work
> 
> 
> 
> Sorry if this email is not formatted correctly.  Something is wrong with 
> my browser
> currently typing in a textarea.  Thanks.
> 
> 
> 
> > 


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

Reply via email to