在等式检查中可能有两个以上的值吗?(> NUM1 NUM2)ELISP

Pas*_*ten 1 lisp emacs elisp

函数"greaterthan",(< NUM1 NUM2)仅允许返回t/nil来比较2个值.

我想测试(var1> var2 <var3 <var4),有没有办法在lisp中只使用一个函数?如果没有,最好的程序是什么?

Ant*_*nko 6

最好的程序是不要打扰:(and (< var2 var1) (< var2 var3) (< var3 var4))你的..>..<..<..链条读起来并不难.

测试升序是有意义的:

(require 'cl)
(defun cl-< (&rest args)
   (every '< args (cdr args))
Run Code Online (Sandbox Code Playgroud)

这些天我不再犹豫(require 'cl)了,但如果你这样做,这里有另一种变体:

(defun cl-< (arg &rest more-args)
  (or (null more-args)
      (and (< arg (first more-args))
           (apply #'cl-< more-args))))
Run Code Online (Sandbox Code Playgroud)