![]() |
![]() |
![]() |
![]() |
?- atom(a).
yes
?- atom(a43).
yes
?- atom('a s').
yes
?- atom('a S 34').
yes
?- atom(5a).
no
integer - täisarv vahemikus -2147483648..2147483647 (s.t. 32-bitine); kontrollib predikaat integer(X) (kuid kui arv tegelikult on sellest vahemikust väljaspool, võib tulemus olla ettearvamatu, vt. allpool):
?- integer(200).
yes
?- X=2000000000000000, Y is X+1, integer(Y).
X = 1233977344 Y = 1233977345 no
?- X=80000000000, Y is 2*X, integer(X), integer(Y).
X = -1604378624 Y = 1086210048
yes
Predikaat atomic(X) kontrollib, kas argument on atom või täisarv, seega
?- atomic(5).
yes
?- atomic(asd).
yes
?- atomic('a S').
yes
?- atomic(200000000000).
no
Reaalarve (need ei või alata ega lõppeda punktiga, võib kasutada ka järku) kontrollib predikaat float(X):
?- float(4.5).
yes
?- float(-2.873572).
yes
?- float(-0.1e-20).
yes
?- float(2.3E50).
yes
?- float(.3).
Error #221: Unexpected operator
Predikaat number(X) on tõene, kui X väärtuseks on täis-või reaalarv:
?- number(3).
yes
?- number(-2.03e-200).
yes
String on sümbolite jada, mis on võetud dollarimärkide (erineb LPA-st!) vahele; stringe kontrollib predikaat string(X) (stringide töötlemiseks on palju sisseehitatud predikaate: string_atom(String, Atom), string_integer(String, Integer), string_length(String, Length) jne, vt. Help):
?- string($As we know$).
yes
Predikaat var(X) kontrollib, kas X on veel väärtustamata muutuja (s.t. kas X-l on juba väärtus):
?- var(X).
X = H83
yes
?- X is 3, var(X). %- siin "is" annab X-le väärtuse!
no
Predikaat nonvar(X) on tõene, kui muutujal X on juba väärtus.
Predikaat list(X) on tõene, kui X väärtuseks on nimistu:
?- list([a,s]).
yes
?- list([a,3,'4X']).
yes
?- list([a,3,4X]). /* nimistu element võib olla atom, kuid kui atom
algab arvuga, peab ta olema võetud apostrofide vahele! */
Error #221: Unexpected operator
Kõige sagedamini programmis esinev andmetüüp on struktuur. Struktuur on määratud oma nime(ehk funktori) ja argumentidega; struktuurid on näiteks kõik faktid (fakti kirjelduse lõpus olev punkt ei kuulu struktuuri!):
kaidud(a1)
valetab(lovi, esmaspaev)
kestab(london, suess, 7)
Struktuuri süntaksit kontrollib predikaat structure(X):
?- structure(tupik(a1)).
yes