The behavior of set seems a bit strange to me: arc> (set (and a) 42)
42
arc> (set (or b) 42)
Error: "First arg to set must be a symbol ((fn (gs1439) (if gs1439 gs1439 (or))) b)"
This happens because "and" macroexpands to a symbol and "or" expands to a fn. It also happens because macro processing goes through a special case (ac-setn/ac-macex) if the macro is in the first position of a "set". And "set" macroexpands but doesn't evaluate the argument.I don't think this is a bug per se, but this behavior bothers me. It seems to expose details of how the arguments are implemented. (This isn't tied to "and" and "or" specifically; they are just examples.) Does anyone else think this behavior is strange? |