Ricerca…


Naming

Durante la programmazione in Prolog, dobbiamo scegliere due tipi di nomi:

  • nomi di predicati
  • nomi di variabili .

Un buon nome predicato chiarisce cosa significa ogni argomento. Per convenzione, i caratteri di sottolineatura vengono utilizzati nei nomi per separare la descrizione di diversi argomenti. Questo perché underscores_keep_even_longer_names_readable , mentre mixingTheCasesDoesNotDoThisToTheSameExtent .

Esempi di nomi di predicati validi sono:

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

Si noti che vengono utilizzati nomi descrittivi . Gli imperativi sono evitati. L'uso di nomi descrittivi è consigliabile perché i predicati Prolog possono essere tipicamente utilizzati in più direzioni e il nome dovrebbe essere applicabile anche a tutti o nessuno degli argomenti è istanziato.

La capitalizzazione mista è più comune quando si selezionano i nomi delle variabili . Ad esempio: BestSolutions , MinElement , GreatestDivisor . Una convenzione comune per denominare le variabili che denotano stati successivi utilizza S0 , S1 , S2 , ..., S , dove S rappresenta lo stato finale.

dentellatura

Ci sono solo pochi costrutti linguistici in Prolog e diversi modi per indentarli sono comuni.

Indipendentemente dallo stile scelto, un principio che deve essere sempre rispettato è di non posizionare mai (;)/2 alla fine di una riga. Questo perché ; e , aspetto molto simile, e , frequente , si verifica alla fine di una linea. Pertanto, le clausole che utilizzano una disgiunzione dovrebbero, ad esempio, essere scritte come:

(  Goal1
;  Goal2 
)

Ordine degli argomenti

Idealmente, i predicati Prolog possono essere utilizzati in tutte le direzioni. Per molti predicati puri, anche questo è effettivamente il caso. Tuttavia, alcuni predicati funzionano solo in particolari modalità , il che significa schemi di istanziazione dei loro argomenti.

Per convenzione, l'ordine di argomenti più comune per tali predicati è:

  • gli argomenti di input vengono inseriti per primi. Questi argomenti devono essere istanziati prima che venga chiamato il predicato.
  • le coppie di argomenti che appartengono insieme sono posizionate in modo adiacente, come p(..., State0, State, ...)
  • gli argomenti di output previsti sono posti per ultimi. Questi predicati sono istanziati dal predicato.


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow