On Wed, Oct 8, 2008 at 8:08 AM, Rich Hickey <[EMAIL PROTECTED]> wrote:
>
> Will existing Clojure regex (consumer) code need to change, i.e. will
> people need to modify their existing #"" literals and if so in what
> way?

Yes, many existing #"" literals would have new meaning or become
invalid under this proposal.

Some patterns wouldn't have to be changed.  Here are a couple examples:
#"foo"
#"(one) *(two)"
#"/this.*/that"

By far the most common change people would have to make would be to
remove doubled back-slashes:
old: #"\\w"         new: #"\w"
old: #"\\("         new: #"\("
old: #"\\bword\\b"  new: #"\bword\b"

Reading through Clojures string reader and Java's Pattern docs, the
only other anomaly I've spotted is if someone was using \b to mean
\backspace.  With the proposed change, #"\b" means word boundary, so:
old: #"\b"  new: #"\x08"

Most of the time, failing to update your regex literal will result in
a valid regex that means something different.  Put another way, things
that used to match like you wanted will just stop matching.  In a few
cases (such as #"\\(") what used to be a valid regex will throw an
exception at read time, with a detailed error message pointing out the
position of the illegal paren.

Of course if this change is unacceptable, these proposed rules could
be applied to a new dispatch macro.  One option would be something
like #r/foo/ that would allow your choice of delimiters to further
reduce the need for back-slash quoting within the regex.

--Chouser

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