3.2 Some operations on lists 1.Concatenation 2.Adding an item 3.Deleting an item
Concatenation conc(L1,L2,L3) L1 and L2 are two lists and L3 is their concatenation. conc([a,b],[c,d],[a,b,c,d]) True conc([a,b],[c,d],[a,b,a,c,d]) False
Concatenation (cont.) Definition of conc: empty (1)If the first argument is empty, then the second and third arguments must be the same list conc(,L,L). non-empty list (2)If the first argument of conc is non-empty list, then it has a head and tail and must look like this [X|L1] the result of concatenation of L1 and L2 is the list [X|L3] where L3 is the concatenation of L1 and L2 conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3).
7 2. Concatenation (Example) conc(,L,L). conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3). ?-conc(Before,[may|After], [jan,feb,mar,apr,may,jun,jul,aug,sep,oct,n ov,dec]). Before = [jan, feb, mar, apr], After = [jun, jul, aug, sep, oct, nov, dec] How can we find the months that precedes and follows a given month in a list ?
Class exercise (1) conc(,L,L). conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3). Write a goal, using conc, to delete the last three elements from the list L producing another list L1. HINT : L is a concatenating of L1 and another three elements list
Answer: ?- L = [1,2,3,4,5], conc(L1,[_,_,_],L). L = [1, 2, 3, 4, 5], L1 = [1, 2]
10 Concatenation Definition of member using conc: We can program the membership relation using conc: member1(X,L):- conc(L1,[X|L2],L). X is a member of list L if L can be decopmosed into two lists so that the second one has X as its head. member1(X,L):- conc(_,[X|_],L). member1(X,L):- conc(L1,[X|L2],L). member1(X,L):- conc(_,[X|_],L). ?- member1( b,[a,b,c]).
11 Adding an item Simply to put an item in front of a list: [X|L] Definition of add: The procedure can be written explicitly as the fact: add(X,L,[X,L]). Example ?-add(z,[a,b,c],NewList).
Delete an item Deleting an item X from list L, can be programmed as a relation: Del(X,L,L1). Where L1 is equal to L with the item X removed.
Delete an item The del definition : We have two cases : 1)If X is the head of the list, then the result after deletion will be the tail of the list. del(X,[X|Tail], Tail). 2) If X is in the tail then it is deleted from there: del(X,[X|Tail], Tail). del(X, [Y|Tail], Tail1) :- del(X, Tail, Tail1).
14 2. Deletion (Example) del(X,[X|Tail], Tail). del(X, [Y|Tail], Tail1) :- del(X, Tail, Tail1). ?- del(a,[a,b,a,a],L). L = [b, a, a] ; L = [a] ; L =  ;
Your consent to our cookies if you continue to use this website.