Prolog Language
コーディングガイドライン
サーチ…
ネーミング
Prologでプログラミングするときは、2種類の名前を選択する必要があります。
- 述語の名前
- 変数の名前。
良い述語名は、各引数が何を意味するのかを明確にします。慣例により、異なる引数の記述を区別するために名前にアンダースコアが使用されています。これは、 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
は最終状態を表します。
インデント
Prologにはいくつかの言語構成があり、インデントするためのいくつかの方法が一般的です。
どちらのスタイルを選んでも、常に遵守すべき1つの原則は、行の最後に決して (;)/2
を置かないことです。これは;
そして,
非常によく似て、そして,
頻繁に行の最後に起こります。したがって、論理和を使用する節は、たとえば次のように記述する必要があります。
( Goal1 ; Goal2 )
議論の順序
理想的には、すべての方向でProlog述語を使用できます。多くの純粋な述語については、これも事実です。しかし、いくつかの述語は特定のモードでのみ動作します。つまり、引数のインスタンス化パターンを意味します。
慣例により、そのような述語の最も一般的な引数の順序は次のとおりです。
- 入力引数が最初に置かれます。これらの引数は、述語が呼び出される前にインスタンス化する必要があります。
- 一緒に属している引数のペアは、
p(..., State0, State, ...)
など)のように隣接して配置されp(..., State0, State, ...)
- 意図した出力引数は最後に置かれます。これらの述部は、述部によってインスタンス化されます。