LINUX.ORG.RU

Prolog


0

0

День добрый. Есть необходимость использования языка prolog (нет, зачетная сессия еще не началась :) ), сам язык потихоньку осваиваю по книге И.Братко «Программирование на языке ПРОЛОГ для исскуственного интеллекта», но разобраться в swi-prolog и gnu-prolog никак не могу. Подкиньте документацию к этим компиляторам пожалуйста, желательно на русском.И было бы неплохо узнать структуру программ на диалектах для этих компиляторов, может кто подскажет?

★★

Ответ на: комментарий от Dikar

>>а fail то зачем?

Через fail таким образом обычно гарантируют перебор всех вариантов (это может понадобиться, например, при выводе через write). То же самое что нажимать ; на каждый очередной вывод.

В приведенном примене нужность fail не очевидна, лучше глянь тут

http://cs.union.edu/~striegnk/courses/nlp-with-prolog/html/node63.html

mclaudt
()
Ответ на: комментарий от mclaudt

Failure Driven Loops

The idea of failure driven loops is to force Prolog to backtrack until there are no more possibilities left. How can we force Prolog to backtrack? Well, Prolog automatically tries to backtrack when it fails. So, adding a goal which always fails (such as the built in predicate fail/0 which has no effect but to make Prolog fail) at the end of a clause, will force Prolog to backtrack over all the other goals in that clause until it has tried all the possibilities. Here is an example:

    write_everybody_happy :- happy(X),
                             write(X),nl,
                             fail.
    write_everybody_happy :- true.

If you consult this little program and the ask Prolog the query write_everybody_happy, Prolog will look up in its database all objects that make happy(X) true and will print them out on the screen. So, if the database looked as follows

    happy(harry).
    happy(ron).
    happy(hermione).
    happy(hagrid).

Prolog would write on the screen

    harry
    ron
    hermione
    hagrid
     
    yes
mclaudt
()

Пролог это хорошо. Из реализаций рекомендую Yap. Мой друг даже песню о нем сочинил: «Йап! Йаааап! Йаааап! Йаааап! Йап! Йаааап! Йаааап! Йаааап!»

grusha
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.