수색…


부작용이있는 술어

부작용 을 일으키는 술어는 순수한 논리의 영역을 벗어납니다. 예를 들면 다음과 같습니다.

  • writeq/1
  • read/1
  • format/2

부작용은 프로그램 내에서 추론 할 수없는 현상입니다. 예를 들어, 시스템 단말기에서 파일이나 출력을 삭제합니다.

메타 논리 술어

인스턴스화에 대한 그 이유는 메타 논리라고 술어. 예 :

  • var/1
  • ground/1
  • integer/1

이 술어는 순수한 단조 로지 논리 프로그램의 영역 밖에 있습니다. 왜냐하면 논리 곱셈 의 결합 성 ( commutativity) 같은 속성을 깨뜨리기 때문입니다.

메타 논리적 인 다른 술어에는 다음이 포함됩니다.

  • arg/3
  • functor/3
  • (=..)/2

이 술어는 원칙적 으로 1 차 로직 내에서 모델링 될 수 있지만 무한 수의 절이 필요합니다.

모든 솔루션 술어

모든 솔루션 에 대한 이유가 비논리적이라는 조건. 예를 들면 다음과 같습니다.

  • setof/3
  • findall/3
  • bagof/3

! / 0 및 관련 조건 자

Prolog 프로그램의 선언적 읽기를 방해하거나 금지하는 술어는 논리적입니다. 그러한 술어의 예는 다음과 같습니다.

  • !/0
  • (->)/2 및 if-then-else
  • (\+)/1

이러한 술어는 통역사의 실제 제어 흐름을 고려하여 절차 적으로 만 이해할 수 있으며 순수 로직의 영역을 넘어서고 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow