Nwlapcug.com


Come creare un prologo accodare predicato

Prolog contiene un predicato incorporato chiamato "append" che aggiunge due elenchi, ma scrivendo il tuo ti aiuterà a comprendere come il linguaggio utilizza corrispondenza e unificazione di effettuare i calcoli.

In un linguaggio imperativo e procedura (come C++ o Java), scrivere un algoritmo che si ripete su due elenchi e li aggiunge insieme. Nel prologo, tu fai l'opposto; si scrive un insieme di regole che definiscono come dovrebbe apparire l'elenco definitivo, e l'interprete si applica tali regole per calcolare il risultato.

Come il built-in "append" predicato, si definirà un predicato di "appendLists" che accetta tre argomenti: il primo elenco, il secondo elenco e il risultato di aggiunta di elenchi di primo e secondo insieme.

Nel prologo, vuoto parentesi quadre "[]" (senza virgolette) denota la lista vuota e la notazione "[primo | Resto] "(senza virgolette) rappresenta un elenco in cui il primo elemento è"Prima"e cui elementi rimanenti sono un elenco chiamato"Riposare".

Istruzioni

1

Definire una regola per il caso base della ricorrenza, che afferma che aggiungendo qualsiasi elenco all'elenco vuoto risultati nell'elenco originale. Digitare la seguente regola il vostro interprete Prolog, senza le virgolette circostanti, e premere INVIO: "appendLists ([], List, lista)."

2

Definire una regola per il caso ricorsivo digitando la seguente regola in vostro interprete, senza le virgolette circostanti, e premendo INVIO: "appendLists ([primo | Turismo1], elenco, [primo | Rest2]):-appendLists (turismo1, elenco, Rest2). " Questa regola afferma che (la lettura destra prima), se aggiungendo "Turismo1" e "Elenco" si traduce in "Rest2", allora è anche vero che aggiungendo "Head" seguita da "Turismo1" e "Elenco" si traduce in "Testa" seguita da "Rest2".

3

Testare il 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 l'elenco allegato nella variabile non associata "Risultato" e stampare "risultato = [a, b, c, d]".