16. Ejemplo: concatenar listas A y B list procedure cat(list a, list b) { list t = list u = copylist(a); while (t.tail != nil) t = t.tail; t.tail = b; return u; } En un lenguaje imperativo En un lenguaje declarativo En un lenguaje funcional cat(a,b) if b = nil then a else cons(head(a), cat(tail(a),b)) cat([], Z, Z). cat([H|T], L, [H|Z]) :- cat(T, L, Z).
17. Sintaxis completa de Prolog Término Constante Variable Término compuesto Atomo Número alpha17 pago juan_perez gripe + =/= ’ 12Q&A’ 0 1 57 1.618 2.04e-27 -13.6 gusta(juan, maria) libro(cervantes, quijote) f(x) [1, 3, g(a), 7, 9] -(+(15, 17), t) 15 + 17 - t X Quincena Enfermedad _257 _ Nombra un individuo Reemplaza un individuo que no puede ser nombrado cuando el programa se escribe Nombra un individuo que tiene partes
18. Términos compuestos padres(manchas, pongo, perdita) Functor (un átomo) de arity 3. componentes (términos) Se puede mostrar el término como un árbol padres perdita pongo manchas