Символьные константы могут содержать латинские буквы, цифры и специальные (прочие) символы (в том числе кириллицу). Если они начинаются с прописной буквы или цифры или содержат специальные символы, то они должны быть заключены в апострофы. Если апостроф используется внутри атома, он удваивается.
ПРИМЕРЫ символьных констант:
tennis '23' 'Paris' юла '----->' 'Mary''s'
Символьная константа всегда унифицируется с такой же символьной константой. Длина символьной константы не должна превышать 255 символов[8].
ЦЕЛЫЕ ЧИСЛА.
Целые числа могут быть положительные и отрицательные. Целое число всегда унифицируется с равным ему целым числом. Размер целых чисел ограничен только размером предоставляемого стека.
ЗАМЕЧАНИЕ. Данное утверждение верно для версий собранных с использованием библиотеки GMP(GNU multiple precision arithmetic library).
ASCII-коды символов также являются целыми числами.
РАЦИОНАЛЬНЫЕ ЧИСЛА
Рациональное число в SWI-prolog определено (в сборке с использованием GMP) аналогично рациональному числу в математическом смысле. Рациональное число представляется в виде пары двух целых чисел (деление на ноль запрещено) и обозначается функтором rdiv, который может выступать в роли функции двух аргументов (любые числа - не только целые), возвращающей рациональное число, либо в роли инфиксного оператора. При оперировании справа от оператора is только рациональными числами результат так же будет являться рациональным числом. Целое число является рациональным.
Для приведения числа с плавающей точкой к типу рационального числа используют функции rational(X) и rationalize(X), где X - число с плавающей точкой.rational(X) вычисляет рациональное число соответствующее машинному приближению числа X. rationalize(X) – «учитывает» ошибку округления и вычисляет рациональное число, соответствующее X (а не его машинному представлению).
ПРИМЕР.
?- X is rational(0.12).
X = 8646911284551353 rdiv 72057594037927936.
?- X is rationalize(0.12).
X = 3 rdiv 25.
Однако, можно убедиться, что для чисел, у которых машинное представление совпадает с самим числом, функции работают одинаково.
?- X is 1/256.
X = 0.00390625.
?- X is rational(0.00390625).
X = 1 rdiv 256.
?- X is rationalize(0.00390625).
X = 1 rdiv 256.
ПРИМЕРЫ использования рациональных чисел:
A is 2 rdiv 6 A = 1 rdiv 3
A is 4 rdiv 3 + 1 A = 7 rdiv 3
A is 4 rdiv 3 + 1.5 A = 2.83333
A is 4 rdiv 3 + rational(1.5) A = 17 rdiv 6