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