📜  LISP 中的比较运算符(1)

📅  最后修改于: 2023-12-03 14:44:00.795000             🧑  作者: Mango

LISP 中的比较运算符

在 LISP 中,比较运算符用于比较两个值的大小、相等性或者是否包含。下面介绍常用的比较运算符。

= 和/=

= 用于判断两个值是否相等,返回 T 或者 NIL;而 /= 用于判断两个值是否不等,返回 T 或者 NIL

(= 1 1) ; => T
(/= 1 2) ; => T

注意,=/= 可以接受任意数量的参数,用于比较它们是否都相等或者都不相等。

>, >=, <, <=

用于比较两个数的大小关系。比较运算符的返回值为 T 或者 NIL

(> 1 2) ; => NIL
(>= 1 2) ; => NIL
(< 1 2) ; => T
(<= 1 2) ; => T

同样地,比较运算符可以接受多个参数进行比较。

字符串比较

LISP 中的字符串比较函数有 string-equalstring<。其中 string-equal 用于判断两个字符串是否相等,而 string< 用于比较两个字符串的字典序大小关系。

(string-equal "hello" "Hello") ; => T
(string< "abc" "def") ; => T
列表比较

LISP 中,比较两个列表的函数有 equalequalp。其中,equal 用于比较两个列表是否完全相同,equalp 比较两个列表是否结构相同并且成员相等。

(equal '(1 2 3) '(1 2 3)) ; => T
(equalp '(1 2 3) '(1 "2" 3)) ; => T

需要注意的是,equalequalp 在比较列表时,不同空间中相同内容的列表并不相等。

(let ((lst1 '(1 2 3))
      (lst2 '(1 2 3)))
  (equal lst1 lst2)) ; => T

(let ((lst1 '(1 2 3))
      (lst2 (list 1 2 3)))
  (equal lst1 lst2)) ; => NIL
总结

LISP 中,比较运算符有 =, /=, >, >=, <<= 等函数。对于不同类型的数据,需要使用对应的比较函数,例如 string-equalstring<equalequalp 等。