NAME (not name) may be "interned" in the sense that it will exist
somewhere in the symbol tree, but that doesn't matter—at all. At
least in newLISP. In Clojure it may have some consequences and if
so, that would be a valid argument to make, I'd be interested to
know what they are if that is the case.
It matters in Clojure because symbols are interned in namespaces, or
they have no namespace. Symbols from different namespaces denote
different things: for example, this works just fine in Clojure, even
though it's a Lisp-1, because the local `keys` has no namespace.
(let [keys "Chubb"]
(println (clojure.core/keys {:foo :bar})))
Neither are the names specified in a query such as "SELECT * FROM
people". Who knows what'll happen when you do "SELECT p1.name ...".
This is incorrect. A query like "SELECT *" will not have any issues
getting the correct, expected names from the table definition. You
can check the code again, there's no string parsing going on with
the query.
My point with that example is that it really is magic: the symbol name
comes out of the DB, and isn't even mentioned in the syntax of the
query. Against a different DB you'll get different results -- your
code might even throw an error about a symbol not existing.
What does newLISP do for a query like
SELECT p1.name, p2.name from people p1 JOIN people p2;
?
It's also exceedingly unlikely it will happen due to naming
convention and even if it happens, it's *still OK* because nothing
breaks because things are only shadowed within the scope of the
macro call and you're explicitly expecting to use the NAME symbol,
etc. There's zero confusion and zero ambiguity.
The literature about hygienic macros disagrees with you.
--
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