Я просто хотел проверить, какие символы SWI-пролог рассматривает как 'alnum'.
Мой вопрос был следующим:
findall(X,char_type(X,alnum),Lalnum),length(Lalnum,N).
и ответ SWI:
Lalnum = ['0', '1', '2', '3', '4', '5', '6', '7', '8'|...],
N = 816459.
Я был очень удивлен - почему так много?
Тогда я решил проверить чистый набор 'ascii' - в конце концов, согласно странице документа:
http://www.swi-prolog.org/pldoc/doc_for?object=char_type/2
их всего 128 (набор 7-битных символов).
Мой очевидный вопрос был:
findall(X,char_type(X,ascii),Lascii),length(Lascii,N).
и ответ SWI:
Lascii = ['\000\', '\001\', '\002\', '\003\', '\004\',
'\005\', '\006\', '\a', '\b'|...],
N = 2176.
Я был удивлен даже больше, чем раньше ...
Что случилось? В чем проблема?
С моим вопросом? С моей установкой SWI-пролога? С моей системой?
Это:
SWI Prolog 7.7.13, with ascii encoding:
current_prolog_flag(encoding,X).
X = ascii.
Win 8.1 64bit, with code page 852.
А как это исправить?
Заранее спасибо
EDIT:
возможно, я нашел ответ на свой второй вопрос: «как это исправить».
Кажется, что дополнительный пункт:
sort(Lascii,SortedLascii)
удаляет повторы и оставляет основной набор из 128 символов в одиночку.
но я до сих пор не понимаю, почему первое предложение дает так много результатов ... ???