Вы всегда можете найти его самостоятельно. Тест всего несколько секунд прочь, если вы используете интерактивную систему Lisp:
CL-USER 1 > (every (lambda (x) (equal "a" x)) "a")
NIL
Над возвращает NIL.
Теперь используйте функцию Common Lisp DESCRIBE
, чтобы получить описанные данные.
CL-USER 2 > (every (lambda (x)
(describe x)
(describe "a")
(equal "a" x))
"a")
#\a is a CHARACTER
Name "Latin-Small-Letter-A"
Code 97
Bits 0
Font 0
Function-Key-P NIL
Таким образом, значение x
является персонажем. Символ #\a
.
"a" is a SIMPLE-BASE-STRING
0 #\a
NIL
тип "а" SIMPLE-BASE-STRING
(здесь в LispWorks).
Если вы посмотрите на определение EQUAL
, вы увидите, что символ и строка никогда не равны, потому что они имеют разные типы.
CL-USER 3 > (equal #\a "a")
NIL
'(, педант это функция не оператор) – d11wtq
@ d11wtq вы можете объяснить? – fvrghl
lisp не имеет «операторов», он имеет только функции. Когда вы выполняете '(equal x y)', вы применяете функцию 'equal' к' x' и 'y'. – d11wtq