rotar - prolog listing example
ComprobaciĆ³n de tipo Prolog (5)
numero 1
¿Hay alguna forma de determinar el tipo de elemento dentro de una lista en Prolog? Sé que las variables no están escritas explícitamente en Prolog, pero necesito verificar si un elemento es un número, un personaje específico, etc. ¿Cómo se puede lograr esto?
Prolog define un grupo de predicados incorporados para fines de prueba de tipo: var/1
, atom/1
, integer/1
, float/1
, atomic/1
, compound/1
, nonvar/1
, number/1
, todos ellos con un significado completamente autoexplicativo si conoces los tipos de datos del idioma. Para caracteres específicos, puede explotar la unificación con ese carácter, después de verificar que el elemento no sea una variable libre (de lo contrario, la unificación siempre es exitosa).
Puedes probar este código:
isList([_|_]).
isList([]).
Espero eso ayude.
Para verificar la lista, puede probar:
listing(is_list/1, list_functor/1).
is_list(X) :-
functor(X, F, _),
list_functor(F).
list_functor(''.'').
list_functor(''[]'').
Para verificar si una variable está vinculada a una lista, puede usar is_list/1
.