Есть ли проверка алфавита в прологе?
Привет,
Был ли какой-то тест или предикат, который я могу использовать в прологе, чтобы проверить, является ли определенный символ алфавитным? Прямо сейчас, что я делаю, это:
Список нелегальных символов: \n -> 10, пробел -> 32,!->33, .->46,,->44,:->58,;->59% % 63->?, 45 -> -, 34->", 39-> %
\+member(Ch,[10, 32, 33, 34, 39, 44, 45, 46, 58, 59, 63 ]), %Checking for line return (\n), space, punctuations
Это только некоторые из символов, которые мне нужно проверить. имея тест, такой как буква (Ch). сэкономил бы мне много времени, и, прежде всего, был бы более оборонительным подходом.
Спасибо
2 ответа
Решение
is_alpha/1
Есть и другие предикаты, такие как is_lower/1 и т. Д.
В SWI-Prolog это делается с помощью char_type / 2, например
% X is either a single-character atom or a character code
alphabetical(X) :- char_type(X, alpha).
SWI-Prolog также предлагает библиотеку ctypes, которая обеспечивает is_alpha
, так далее.
:- use_module(library(ctypes)).
alphabetical(X) :- is_alpha(X).