Что возможно, а что нет в Prolog?

#prolog #logic #boolean

#пролог #Логические #логическое

Вопрос:

Я новичок в Prolog и разработке логической парадигмы, но я думаю, что это может помочь мне в моем приложении. Мое первое сомнение заключается в том, что я могу сделать это с помощью языка.

Я выполняю некоторую обработку текста / обработку на естественном языке, и я думаю, что мой код будет понятнее и проще выполнять его на логическом языке, чем на Java (это то, что я использую, и будет интегрироваться с Prolog).

Моя первая цель сейчас — определить тип символа строки (буквенный, цифровой, числовой и т. Д.). У меня есть четыре основных аргумента: hasLetter, hasDigit, hasSymbol, hasPunctuation.

С помощью Prolog у меня может быть один метод determineType() , который вернет мне тип на основе этих четырех атрибутов или только с помощью отдельных тестов, таких как isDigit() thinkgs, isAlphabetic() и т. Д.?

Комментарии:

1. Похоже, вы не совсем перешли от «императивного» к «логическому» мышлению. В Prolog никогда не бывает возвращаемого значения — все, что вы получаете, — это если предикат выполнен успешно или неудачно. Аргументы предиката — это не входные или выходные данные, а переменные, которые должны быть унифицированы. Унификация — единственный способ «вернуть» результаты в Prolog. Просто подумал, что я бы вложил свои два цента.

2. телекинизм, молекулярные манипуляции, предчувствие? xD Вы должны проверить библиотеки системы prolog, которую вы используете, обычно там много скрытых преимуществ.

Ответ №1:

Категория или «тип» каждого символа — это отношение, связывающее символ с его типом. Вы можете закодировать это в Prolog, используя предикат. Например, значимым именем для такого предиката было бы: «character_type(C, T)». В SWI-Prolog проверьте библиотечные предикаты char_type/2 и code_type/2, чтобы получить эту информацию. Вы можете использовать их для получения типа (ов) символа (при возврате могут быть сгенерированы альтернативные решения), а также для проверки, принадлежит ли символ к заданной категории. Для обработки языка вы также можете найти полезные грамматики определенных предложений (DCGS).