July 3
Prolog contiene un predicato built-in chiamato "accodare" che aggiunge due liste, ma scrivere il proprio vi aiuterà a ottenere una comprensione di come il linguaggio utilizza corrispondenza e l'unificazione di eseguire calcoli.
In un linguaggio di programmazione procedurale e imperativo (come C ++ o Java), si può scrivere un algoritmo che loop oltre due liste e li aggiunge insieme. In Prolog, si fa il contrario; si scrive un insieme di regole che definiscono ciò che l'elenco definitivo dovrebbe essere simile, e l'interprete, applicando tali norme per calcolare il risultato.
Come il predicato "accodamento" built-in, si definire un predicato "appendLists" che prende tre argomenti: il primo elenco, la seconda lista, e il risultato aggiungendo primo e secondo le liste insieme.
In Prolog, vuoti tra parentesi quadre "[]" (senza virgolette) denota la lista vuota, e la notazione "[Prima | Resto]" (senza virgolette) rappresenta una lista i cui primo elemento è "First" ei cui elementi restanti sono un elenco chiamato "riposo".
1 Definire una regola per il caso base della ricorsione, in cui si afferma che aggiungendo ogni lista i risultati elenco vuoto nella lista originale. Digitare il seguente regola nel vostro interprete Prolog, senza le virgolette circostanti, e premere Invio: ". AppendLists ([], List, List)"
2 Definire una regola per il caso ricorsivo digitando la seguente regola nel vostro interprete, senza le virgolette circostanti, e premendo Invio: "appendLists ([Prima | Rest1], List, [Primo | periodo di riposo.2]): - appendLists (Rest1, Lista, periodo di riposo.2). " Questa regola stabilisce che (la lettura del lato destro prima), se aggiungendo "Rest1" e "List" si traduce in "periodo di riposo.2", allora è anche vero che aggiungendo "capo" seguito da "Rest1" e "List" si traduce in "Testa" seguito da "periodo di riposo.2".
3 Metti alla prova la tua predicato con un esempio. Digitare la seguente query in interprete, senza virgolette, e premere Invio: "appendLists ([a, b], [c, d], Risultato)." L'interprete deve restituire la lista allegata nel non legato "Risultato = [a, b, c, d]" "Risultato" e di stampa variabile.