수색…


이름 지정

프롤로그에서 프로그래밍 할 때 두 가지 이름을 선택해야합니다.

  • 술어의 이름
  • 변수의 이름.

좋은 술어 이름은 각 인수가 무엇을 의미하는지 분명히합니다. 규칙에 따라 밑줄 은 다른 인수에 대한 설명을 구분하기 위해 이름에 사용됩니다. 이것은 underscores_keep_even_longer_names_readable 이기 때문입니다. 반면에 mixingTheCasesDoesNotDoThisToTheSameExtent .

좋은 술어 이름의 예는 다음과 같습니다.

  • parent_child/2
  • person_likes/2
  • route_to/2

설명이 포함 된 이름이 사용됩니다. 필수 사항은 피할 수 있습니다. Prolog 술어는 일반적으로 여러 방향으로 사용될 수 있으므로 이름을 사용하는 것이 좋습니다. 이름은 인스턴스화 된 모든 또는 모든 인수에 적용 할 수 있어야합니다.

변수 이름을 선택할 때 혼합 대문자가 더 일반적입니다. 예 : BestSolutions , MinElement , GreatestDivisor . 연속적인 상태 를 나타내는 변수 이름 지정에 대한 일반적인 규약은 S0 , S1 , S2 , ..., S . 여기서 S 는 최종 상태를 나타냅니다.

톱니 모양

프롤로그에는 몇 가지 언어 구문 만 있고 들여 쓰기를위한 여러 가지 방법이 일반적입니다.

어떤 스타일이 선택 되더라도 항상 준수해야하는 한 가지 원칙은 라인 끝 부분절대로 (;)/2절대로 배치 하지 않는 것입니다. 왜냐하면 이것은 ; 그리고 , 매우 유사하고 , 자주 줄의 끝에서 발생한다. 그러므로 분리를 사용하는 절은 예를 들어 다음과 같이 작성해야합니다.

(  Goal1
;  Goal2 
)

인수 순서

이상적으로 Prolog 술어는 모든 방향으로 사용될 수 있습니다. 많은 순수 술어에 대해서도 마찬가지입니다. 그러나 일부 술어는 특정 모드 에서만 작동 합니다 . 즉, 인수의 인스턴스화 패턴을 의미합니다.

관례 상, 그러한 술어에 대한 가장 일반적인 인수 순서는 다음과 같습니다.

  • 입력 인수가 먼저 배치됩니다. 이 인수는 술어가 호출 되기 전에 인스턴스화되어야합니다.
  • 같이 속하는 인수 쌍이 p(..., State0, State, ...) 와 같이 인접하여 배치됩니다 p(..., State0, State, ...)
  • 의도 된 출력 인수가 마지막에 배치됩니다. 이 술어는 술어에 의해 인스턴스화됩니다.


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