if should work on any object
(defmacro and) (defmacro or)