I'm trying to make a decision in a parser library between using
regular maps as states (containing a sequence of remaining tokens, as
well as other info) vs. using metadata maps attached to the sequence
of remaining tokens. In other words:

  {:remainder [\r \e \m], :index 3, :line 5, :column 2}

vs.

  #^{:index 3, :line 5, :column 2} [\r \e \m]

The two germane properties I can think of are accessing speed and
equality of states in testing.

If I do the former, then I can directly alter the index, line, and
column. But in my tests, I have to write something like (make-state
[\r \e \m] 3 5 2) every time. (That might be a good or bad thing; it's
a lot more cluttered, but always explicit about what the expected
values of the whole state are.)

If I do the latter, then to access or alter the index, line, or
column, I have to use 'meta or 'with-meta. Yet my tests would be a lot
cleaner, because I wouldn't have to repeat the line or column every
time I make a state. What I'm worried about is the speed impact that
'meta and 'with-meta may have. Are their time effects negligible?
Which would be "better" Clojure?

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

Reply via email to