Professional Documents
Culture Documents
Domains
i=integer
list = i*
ch=char
list2=ch*
Predicates
member(i,list)
add(i,list,list)
add2(i,list,list)
add3(i,list,list)
add4(i,list,list)
append(i,list,list)
append2(list,list,list)
length(list,i)
sum(list,i)
multi(list,i)
delete(i,list,list)
reverse(list,list)
last(list,i)
Clauses
member(X,[X|_]).
member(X,[_|T]):-member(X,T).
add(X,L,[X|L]).
add2(X,[H|T],[H,X|T]).
add3(X,[H1,H2|T],[H1,H2,X|T]).
append(X,[],[X]).
append(X,[H|T],[H|L]):-append(X,T,L).
add4(X,[H1,H2,H3|T],[H1,H2,H3,X|T]).
length([],0).
length([_|T],N):-length(T,N1),N=N1+1.
sum([],0).
sum([H|T],N):-sum(T,N1),N=N1+H.
multi([],1).
multi([H|T],N):-multi(T,N1),N=N1*H.
delete(H,[H|T],T).
delete(X,[H|T],[H|L] ):-delete(X,T,L).
reverse([],[]).
reverse([H|T],L):-reverse(T,L2),append2(L2,[H],L).
append2([],L,L).
append2([H|T],L,[H|L2]):-append2(T,L,L2).
last([H],H).
last([_|T],X):-last(T,X).