Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.201.217] |
|
Сообщ.
#1
,
|
|
|
Что означает знак ! в турбопрологе? Объясните пожалуйста на простом примере.
|
Сообщ.
#2
,
|
|
|
Если я ещё не забыл, то ! инвертирует спешность сопоставления следующего за ним выражения. Если оно сопоставилось успешно, происходит отказ. Если сопоставить выражение не удалось, промежуточные результаты сопоставления отбрасываются (хотя они вроде при неудаче всегда отбрасываются) и выполнение продолжается со следующего выражения.
К примеру у тебя есть предикат, определяющий отношение родитель-ребёнок, и пара предикатов, определяющих пол. Как определить новый предикат 'брат'? ' A является братом B (забыл уже, как комментарии в прологе пишутся) брат(A,B) :- родитель(C,B), родитель(C,A), !A is B, мужчина(A) |
Сообщ.
#3
,
|
|
|
Не только, есть ещё так называемое отсечение, которое пишется как голый восклицательный знак. Например,
брат(A,B):-женщина(А),!,fail. брат(A,B):-родитель(C,B), родитель(C,A), not(A is B). |