Поиск…


Именование

При программировании в 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, ...)
  • предполагаемые выходные аргументы помещаются последним. Эти предикаты создаются предикатом.


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow