Правило именования этих функций и их аргументов следует из правил именования общих функций для последовательностей (смотрите главу 14).
string= сравнивает две строки и возвращает истину, если они одинаковые (все символы одинаковые), и ложь, если это не так. Функция equal вызывает string=, если применяется к двум строкам.
Именованные аргументы :start1 и :start2 указывают на то, с каких позиций начинать сравнение. Именованные аргументы :end1 и :end2 указывают на то, на каких позициях заканчивать сравнение. Сравнение заканчивается перед указанными позициями. Аргументы «start» по-умолчанию равны нулю (указывают на начало строки), и «end» (если опущены или равны nil) по-умолчанию указывают на конец строки. Таким образом, по-умолчанию строки сравниваются целиком. Эти аргументы позволяют удобно сравнивать подстроки. string= возвращает ложь, если сравниваемые (под)строки неодинаковой длины. То есть, если
истинно, то string= ложно.
X3J13 voted in June 1989 to clarify string coercion (see string).
string-equal похож на string= за исключением того, что игнорирует регистр символов. Два символа равны если char-equal для них истинно. Например:
X3J13 voted in June 1989 to clarify string coercion (see string).
[Функция]
string< string1 string2 &key :start1 :end1 :start2 :end2Эти функции сравнивают две строки лексикографически. Если не выполняется условие, что string1 соответственно меньше, больше, меньше либо равно, больше либо равно, не равно чем string2, то результат nil. Однако, если условие выполняется, то результатом будет первая позиция символа, на которой произошло несовпадение строк. Другими словами, результат это длина префикса строки, удовлетворяющего условию.
Строка a меньше, чем строка b, если в первой позиции, в которой они различаются, символ из a меньше, чем соответствующий символ из b в соответствие с функцией char<, или строка a является префиксом строки b (меньшей длины и совпадением всех символов). FIXME
Именованные аргументы :start1 и :start2 указывают на то, с каких позиций начинать сравнение. Именованные аргументы :end1 и :end2 указывают на то, на каких позициях заканчивать сравнение. Сравнение заканчивается перед указанными позициями. Аргументы «start» по-умолчанию равны нулю (указывают на начало строки), и «end» (если опущены или равны nil) по-умолчанию указывают на конец строки. Таким образом, по-умолчанию строки сравниваются целиком. Эти аргументы позволяют удобно сравнивать подстроки. Индекс, возвращаемый в случае несовпадения строк, находится в string1. FIXME
X3J13 voted in June 1989 to clarify string coercion (see string).
[Функция]
string-lessp string1 string2 &key :start1 :end1 :start2 :end2Эти функции такие же, как и соответственно string<, string>, string<=, string>= и string/= за исключением того, что различия между регистрами букв игнорируются. Для сравнения символов в таком случае вместо char< используется char-lessp.
X3J13 voted in June 1989 to clarify string coercion (see string).