Prolog Language
코딩 가이드 라인
수색…
이름 지정
프롤로그에서 프로그래밍 할 때 두 가지 이름을 선택해야합니다.
- 술어의 이름
- 변수의 이름.
좋은 술어 이름은 각 인수가 무엇을 의미하는지 분명히합니다. 규칙에 따라 밑줄 은 다른 인수에 대한 설명을 구분하기 위해 이름에 사용됩니다. 이것은 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, ...)
- 의도 된 출력 인수가 마지막에 배치됩니다. 이 술어는 술어에 의해 인스턴스화됩니다.