Prolog Language
Linee guida per la codifica
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.