수색…


초록 기계

효율성을 위해, Prolog 코드는 일반적으로 기계 코드 가 실행되기 전에 추상화 되도록 컴파일됩니다.

Prolog 프로그램의 효율적인 실행을 위해 많은 다른 추상 기계 아키텍처 및 변형이 제안되었습니다. 여기에는 다음이 포함됩니다.

  • WAM , Warren 추상 기계
  • TOAM , B-Prolog에서 사용되는 추상 기계.
  • 예 : SWI-Prolog의 VM 용 기초로 사용되는 ZIP
  • VAM , 비엔나에서 개발 한 연구 아키텍처.

색인 생성

널리 사용되는 모든 Prolog 해석기는 적절한 절을 효율적으로 선택하기 위해 인수 인덱싱 을 사용합니다.

사용자는 일반적으로 적어도 첫 번째 인수 인덱싱 에 의존 할 수 있습니다. 즉, 첫 번째 인수의 가장 바깥 쪽 용어의 펑터와 아티 (arity)에 의해 효율적으로 구획을 구분할 수 있습니다. 해당 인수가 충분히 인스턴스화 된 호출에서 일치하는 절은 기본적으로 해당 인수의 해시를 통해 일정 시간에 선택 될 수 있습니다.

최근에는 JIT 인덱싱 이 더 많은 시스템에서 구현되어 술어가 호출 될 때 충분히 인스턴스화 된 모든 인수에 대한 동적 인덱싱이 가능해졌습니다.

꼬리 전화 최적화

사실상 모든 Prolog 시스템은 TCO ( tail call optimization)를 구현합니다. 즉, 테 고리 위치 에있는 술어 호출은 술어가 결정적 일 경우 상수 스택 공간에서 실행될 수 있습니다.

꼬리 재귀 최적화 (tail recursion optimization, TRO)는 꼬리 호출 최적화의 특별한 경우입니다.



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