On Thu, Jan 12, 2012 at 3:31 AM, markus <markus.mauc...@googlemail.com> wrote:
> Computers don't accuse, they process data. And they are not (yet?)
> capable of reading a user's intentions.

Technically no, but it's doubtful that a user using a macro like "for"
intends to "cheat", so from the *programmer's* standpoint it's not
clear why it doesn't treat macros as opaque.

In any event, when a computer program is placed in the role of acting
like a referee of any kind, it behooves the developer to make sure it
errs on the side of "innocent until proven guilty". If the user is
forbidden from using specific symbols that are enumerated, then unless
the user's typing actually contains one of those symbols, it's highly
unlikely that anything nefarious was intended.

If the object is to implement things like "count" in a way that cannot
be circular, then that may seem to clash with the above
recommendation. However, just explicitly forbidding a few other
things, such as "for", that internally use "count" would suffice.

Also, it occurs to me that though it can object to using a macro
implemented to *emit* count it can't presumably detect using a
function that calls count, or a macro that *calls* count (without
emitting it), as things stand anyway, so avoiding that sort of
circularity would still require adding things to the ban-list anyway.
So it might as well treat macros as opaque and then from the user's
standpoint when it comes to the ban-list what he sees is what he gets.

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