Come creare un Prolog Append predicato

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".

istruzione

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.