Книга: ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ
fail
fail
Это целевое утверждение никогда не согласуется с базой данных. Имеются две ситуации, когда этот предикат оказывается полезным. Одна из них – это использование комбинации !- fail, которая уже была описана в разд. 4.3. Конъюнкция целевых утверждений
…!, fail
применяется для того, чтобы указать, что если процесс выполнения дошел до этого момента, то можно больше не пытаться доказать (согласовать) данное целевое утверждение. Конъюнкция считается несогласованной благодаря наличию предиката fail, а родительское целевое утверждение не согласуется ввиду того, что использовано отсечение.
Другая ситуация, в которой используется предикат fail, возникает, когда вы хотите явно указать, что для некоторого целевого утверждения нужно перебрать все решения. Возможно, вы захотите напечатать все возможные решения. Например, выполнение целевого утверждения
?- событие (X,Y), phh(Y), fail.
привело бы к печати всех событий, имеющихся в базе данных, рассмотренной в разд. 5.1, выбор событий и печать их краткого содержания выполняют предикаты событие и phh, при этом цель окажется несогласованной с базой данных. Еще одно применение fail рассмотрено в разд. 7.13 (в определении предиката retrac-tall).
- 2.4.4. RPC Semantics in the Presence of Failures
- 4.5.2. System Failures
- You Can Connect to the Remote Site, but the Chat Script Fails
- Login Succeeds, but the Handshake Fails
- Managing RAID and recovering from failures
- Creating and managing failover scopes
- Recovering your server from hardware or startup failure
- Recovering from a failed start
- 10.4.4.2. Только GLIBC: TEMP_FAILURE_RETRY()
- Load Fail-Safe Defaults
- WHEN ALL ELSE FAILS
- 4.3.2. Комбинация «отсечение-fail»