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.