为什么设置差异功能不能将列表与文件中的数据进行比较?

use*_*885 3 lisp format comparison common-lisp set-difference

这是我的文件和功能:

List1.txt =>猫狗虎熊

List2.txt =>猫狗虎

这些文件是在winodws xp上进行ANSI编码的.

(defun get-file (filename)
  (with-open-file (stream filename)
  (loop for line = (read-line stream nil)
  while line collect line)))

(defparameter *file1* (get-file "list1.txt"))
(defparameter *file2* (get-file "list2.txt"))

(set-difference *file1* *file2*)
Run Code Online (Sandbox Code Playgroud)

我认为输出只是"熊".然而,它返回("猫","狗","老虎","熊")作为差异.我假设它必须与我一起从文件中读取信息,但我被困在那里.感谢您的时间.

Rai*_*wig 5

Common Lisp EQL用作默认测试.你想要string-equal或类似.

CL-USER > (set-difference '("cat" "dog" "tiger" "bear")
                          '("cat" "dog" "tiger")
                          :test #'string-equal)
->
("bear")
Run Code Online (Sandbox Code Playgroud)