SWI пролог, char_type, ascii / alnum, почему так много символов?как это исправить? - PullRequest
0 голосов
/ 15 мая 2018

Я просто хотел проверить, какие символы 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 символов в одиночку.

но я до сих пор не понимаю, почему первое предложение дает так много результатов ... ???

...