/* nome sul disco: inverto.pro */ /* # 1.1.8 # */ DOMAINS int=integer lint=int* reale=real* lreale=reale* car=char lcar=car* str=string lstr=str* simb=symbol lsimb=simb* PREDICATES inverto(lint,lint) inverto(lsimb,lsimb) inverto(lcar,lcar) inverto(lstr,lstr) attacca(lint,lint,lint) attacca(lsimb,lsimb,lsimb) attacca(lcar,lcar,lcar) attacca(lstr,lstr,lstr) CLAUSES /* l'inversa di una lista vuota e' la lista vuota */ inverto([],[]). /* se L1 e' l'inversa della coda della lista data L, l'inversa si ottiene premettendo a L1 la testa di L */ inverto([T|C],L):- inverto(C,L1), attacca(L1,[T],L). attacca([],L,L). attacca([T1|C1],L,[T1|C2]):- attacca(C1,L,C2).
ritorna