Le regole per il calcolo della somma possono essere scritte in Prolog nel seguente programma:
% file: aritmetica/somma.pl % % calcola la somma degli elementi contenuti % in una lista di numeri interi % somma([],0). somma([Testa|Coda],S):- somma(Coda,Scoda), S is Scoda + Testa. /* ?- somma([12,34,25,7],Somma). */
Per il calcolo della media possiamo calcolare separatamente la somma degli elementi e il loro numero. La media sarà il risultato della divisione SommaElementi/NumeroElementi.
%file aritmetica/media.pl % % calcola la media degli elementi % che compongono una lista % media(Lista,Media) :- lunghezza(Lista,NumeroElementi), NumeroElementi > 0, somma(Lista,SommaElementi), Media is SommaElementi/NumeroElementi. lunghezza([],0). lunghezza([_|Coda],N):- lunghezza(Coda,Ncoda), N is Ncoda + 1. somma([],0). somma([Testa|Coda],S):- somma(Coda,Scoda), S is Scoda + Testa. /* ?- media([20,25,12,8,32],N).
Per controllare se una lista è ordinata possiamo usare le regole:
%file: ordinata.pl % %il predicato ordinata(L) ha successo se L e' una lista di numeri interi %ordinati in modo crescente. % ordinata([]). ordinata([_]). ordinata([X,Y|Coda]) :- X < Y, ordinata([Y|Coda]). /* ?- ordinata([7,10,12,34,41]). ?- ordinata([7,10,34,12,41]). */