CAR 订单清单
Order Lists by CAR
我需要能够比较列表中的两辆汽车,以便在 LISP 中对它们进行排序。
列表'(e d) (a b)
我想比较汽车(e 和 a)。这使用 eql 工作。如果它们不匹配,我想按字母顺序排列列表,所以 (a b) (e d)。
我错过了可以看到哪个字符是 'bigger' 的部分,所以先检查 e 还是 a。我试过将它们转换为 ascii 码,但这对 (car a) 不起作用。使用“<”和“>”等算术运算符也不起作用。有没有人知道如何做到这一点?
符号不同于字符串。
CL-USER> (symbol-name 'foo)
"FOO"
可以按照您感兴趣的方式比较字符串(字符序列)。
CL-USER> (string> "FOO" "BOO")
0
CL-USER> (string< "FOO" "BOO")
NIL
使用 string>
而不使用 symbol-name
:
CL-USER 6 > (string> 'a 'b)
NIL
CL-USER 7 > (string< 'a 'b)
0
为了完整起见,下面是您应该如何在 sort
to achieve desired result (sort
is destructive- modifies used sequence, so I also used copy-tree
中使用它来避免这种影响):
(let ((data '((e d) (a b))))
(sort (copy-tree data)
(lambda (x y) (string< (car x) (car y)))))
((A B) (E D))
我需要能够比较列表中的两辆汽车,以便在 LISP 中对它们进行排序。
列表'(e d) (a b)
我想比较汽车(e 和 a)。这使用 eql 工作。如果它们不匹配,我想按字母顺序排列列表,所以 (a b) (e d)。 我错过了可以看到哪个字符是 'bigger' 的部分,所以先检查 e 还是 a。我试过将它们转换为 ascii 码,但这对 (car a) 不起作用。使用“<”和“>”等算术运算符也不起作用。有没有人知道如何做到这一点?
符号不同于字符串。
CL-USER> (symbol-name 'foo)
"FOO"
可以按照您感兴趣的方式比较字符串(字符序列)。
CL-USER> (string> "FOO" "BOO")
0
CL-USER> (string< "FOO" "BOO")
NIL
使用 string>
而不使用 symbol-name
:
CL-USER 6 > (string> 'a 'b)
NIL
CL-USER 7 > (string< 'a 'b)
0
为了完整起见,下面是您应该如何在 sort
to achieve desired result (sort
is destructive- modifies used sequence, so I also used copy-tree
中使用它来避免这种影响):
(let ((data '((e d) (a b))))
(sort (copy-tree data)
(lambda (x y) (string< (car x) (car y)))))
((A B) (E D))