Существуют ли какие-либо компиляторы Пролога, которые могут оптимизировать, ориентируясь на конкретные запросы? - PullRequest
4 голосов
/ 21 марта 2011

Учитывая теорию Пролога и небольшой набор возможных запросов, представляется правдоподобным, что можно было бы сгенерировать требуемое дерево / граф поиска и затем оптимизировать / свести его к чему-то, что можно легко перевести в быструю процедурную программу .

Очевидно, что возможность генерировать общие запросы к базе данных Prolog будет потеряна, если она будет скомпилирована таким образом. Теория Пролога также должна была бы включать в себя некоторый тип ввода / вывода, иначе сокращение оставило бы только статические наборы результатов.

Существуют ли какие-либо системы или компиляторы Prolog, которые имеют такую ​​возможность, или есть какие-либо соответствующие документы по этому вопросу?

1 Ответ

3 голосов
/ 22 марта 2011

Я не знаю ничего конкретного, но вам нужны такие термины, как «специализированный компилятор», «специализация программы», «компиляция в направлении семантики» и «частичная оценка».Попробуйте их с и без "Пролог" в вашем запросе;Сообщество функционального программирования также провело много исследований в этой области.

Обратите внимание, что Пролог завершен по Тьюрингу, поэтому ни один подход не будет идеальным.Есть известные подмножества Пролога, такие как Datalog, но они не включают в себя ввод / вывод.Я считаю, что Даталог описан в «1003 * Искусство пролога» Стерлингом и Шапиро.(Тем не менее, в Datalog есть переменные, что достаточно для простых потоковых операций ввода-вывода.)

Если это не сработает, рассмотрите вопрос по cstheory .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...