Como hemos dicho en el apartado anterior, Prolog es capaz de distinguir las listas de cualquier otra clase de términos, pero esta distinción la hace a nivel interno para detectar errores de notación durante el proceso de
unificación. Si en alg´un programa queremos saber si un t´ermino T es una lista (no vacía) podemos intentar unificarlo con una expresión de la forma [X|Xs] usando el predicado de unificaci´on expl´ıcita ‘.=.’, o podemos definir un predicado recursivo lista/1 en la forma:
lista([]).
lista([X|Xs]):-lista(Xs).
Este predicado es lo m´as parecido a una definici´on del tipo lista que se puede hacer en Prolog y sirve para comprobar si un t´ermino es una lista cuando se lo proporciona un argumento conocido, pero también sirve para generar, por re evaluación, listas cuyas componentes son variables libres.
No hay comentarios:
Publicar un comentario