Сергей, Вопрос не по теме просто любопытства ради слышал про пролог но никогда не видел его в глаза, какая практическая область применения у этого ужаса ?
sheerluck, всё же, я не понял, откуда тут вечный цикл. Точно такая же конструкция в другом примере вечного цикла не дала.
Прошу прощения, есть вопросы.
"Он" - это кто?
Что такое "матчится"?
Что такое "шаг"?
Сергей, вы задали два вопроса прологу
1) ?граничит(испания,франция).
пролог ищет соответствие и находит граничит(испания,франция). Он может тут же ответить.
2) ?граничит(франция,испания).
пролог ищет соответствие, не находит, зато находит граничит(а,б)<-граничит(б,а). и подставляет туда. У него получается граничит(испания,франция). пролог ищет соответствие и находит граничит(испания,франция). Он может тут же ответить.
3) когда пролог пытается граничит(португалия,франция). у него нет никакого соответствия и он в бесконечном цикле применяет граничит(а,б)<-граничит(б,а). потому что ничего другого у него нет.
sheerluck, но у меня нет вопроса ?граничит(португалия,франция).
У меня есть вопрос ?граничит(испания,A).
Разве не должен Пролог показать мне граничит(испания,франция). ?
$ cat Shull.pl
bord(португалия,испания).
bord(испания,франция).
bord(X,Y) :- bord(Y,X).
$ swipl Shull.pl
Welcome to SWI-Prolog (threaded, 64 bits, version 8.4.1)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?- bord(испания,A).
A = франция