Gibt es eine Möglichkeit, den Typ eines Elements in einer Liste in Prolog zu bestimmen? Ich weiß, dass Variablen nicht explizit in Prolog eingegeben werden, aber ich muss überprüfen, ob ein Element eine Zahl, ein bestimmtes Zeichen usw. ist. Wie kann dies erreicht werden?Überprüfung des Prologtyps
Antwort
Prolog definiert eine Gruppe von Einbau-Prädikate für Typ Prüfzwecke: var/1
, atom/1
, integer/1
, float/1
, atomic/1
, compound/1
, nonvar/1
, number/1
, die alle Sie haben eine selbsterklärende Bedeutung, wenn Sie die Datentypen der Sprache kennen. Für bestimmte Zeichen können Sie die Vereinheitlichung mit diesem Zeichen nutzen, nachdem Sie überprüft haben, dass das Element keine freie Variable ist (andernfalls ist die Vereinheitlichung immer erfolgreich).
Zahl/1
Unvollständig, antwortet nicht "aber ich muss überprüfen, ob ein Element eine Zahl, ein bestimmtes Zeichen, usw. ist". – Junuxx
Sie könnten diesen Code versuchen:
isList([_|_]).
isList([]).
Hoffe, es hilft.
Liste zu überprüfen, könnten Sie versuchen:
listing(is_list/1, list_functor/1).
is_list(X) :-
functor(X, F, _),
list_functor(F).
list_functor('.').
list_functor('[]').
Um zu überprüfen, ob eine Variable auf eine Liste gebunden ist, können Sie is_list/1
verwenden.
Für komplexere Typen als Primitive können Sie den SWI_PROLOG-Datensatz-Handling-Mechanismus (http://tinyurl.com/2gy53rr) aufrufen. Auf diese Weise können Sie zusammengesetzte Typen mit benannten Accessor-Feldern ausdrücken. Bei einer Datensatzspezifikation werden automatisch alle Typüberprüfungsprädikate für Sie generiert. Sehr hilfreich! – sharky