是否存在对Clojure中的关键字施加顺序的谓词?
在racket和scheme中,我似乎记得一个名为是否存在对Clojure中的关键字施加顺序的谓词?,clojure,Clojure,在racket和scheme中,我似乎记得一个名为less的函数,它对所有东西施加排序,而不仅仅是数字 (less 'a 'b) ;; -> true (less 'b 'a) ;; -> false (less 9 10) ;; -> true clojure中是否存在这种情况是我的主要问题 我知道compare存在于Clojure中,就像(compare:b:c);->-1。但是,我想知道clojure中是否有一个简单的可排序事物谓词,它返回排序中第一个事物是否在第二个事
less
的函数,它对所有东西施加排序,而不仅仅是数字
(less 'a 'b) ;; -> true
(less 'b 'a) ;; -> false
(less 9 10) ;; -> true
clojure中是否存在这种情况是我的主要问题
我知道
compare
存在于Clojure中,就像(compare:b:c);->-1
。但是,我想知道clojure中是否有一个简单的可排序事物谓词,它返回排序中第一个事物是否在第二个事物之前(“小于”),返回布尔值。例如,clojure如何知道一个关键字比另一个关键字“少”?没有这样的函数,但您可以轻松创建一个:
(def less (comp neg? compare))
compare
期望这两个参数实现java.util.Comparable
接口,或者如果不想使用对象默认的比较实现,可以传递java.util.Comparator
请注意,如果尝试比较不同类的两个对象,通常会得到ClassCastException。尝试(比较1:a)
在关键字的情况下,它们的比较方法只是委托给内部符号比较的实现,您可以找到内部符号比较。如您所见,该实现只是委托给Java的字符串比较(如果忽略ns内容)