    ([x & next]
      (if x false (apply nor next))))
 
+; ??
+(defmacro nand1
+     [& more]
+     `(not (and ~@more)))
+
 ;;; macro ;;;
 (defmacro nor
   "Logical negated or (!(phi | psi))"

    `(let [nor# ~x]
       (if nor# false (nor ~@next)))))

(defn impl 
  "Logical implication (phi -> psi)"
  [phi psi]
  (or (not phi) psi))

(defn nimpl 
  "Logical negated implication (!(phi -> psi))"

   ([] true)
   ([x] true)
   ([x y]
     `(= ~x ~y))
   ([x y & more]
     `(let [y# ~y]
        (if (= ~x  y#) (equiv y# ~@more) false))))

(defn rimpl
  "Reverted logical implication (phi <- psi)"
