Prolog Language
Рекомендации по кодированию
Поиск…
Именование
При программировании в Prolog мы должны выбрать два типа имен:
- имена предикатов
- имена переменных .
Хорошее имя предиката дает понять, что означает каждый аргумент. По соглашению, подчеркивания используются в именах для разделения описания различных аргументов. Это связано с тем, что 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 существует всего несколько языковых конструкций, и несколько способов их отступов являются общими.
Независимо от того, какой стиль выбран, один принцип, который всегда следует придерживаться, - это никогда не размещать (;)/2
в конце строки. Это потому, что ;
и ,
очень похожи, и ,
часто происходит в конце строки. Поэтому предложения, которые используют дизъюнкцию, должны быть, например, записаны как:
( Goal1 ; Goal2 )
Порядок аргументов
В идеале, предикаты Пролога могут использоваться во всех направлениях. Для многих чистых предикатов это также на самом деле. Однако некоторые предикаты работают только в определенных режимах , что означает шаблоны создания экземпляров их аргументов.
По соглашению, наиболее распространенным аргументом для таких предикатов является:
- входные аргументы помещаются первыми. Эти аргументы должны быть созданы до того, как будет вызван предикат.
- пары аргументов, которые принадлежат друг другу, расположены смежно, например
p(..., State0, State, ...)
- предполагаемые выходные аргументы помещаются последним. Эти предикаты создаются предикатом.