Разбор от символа к цифре Пролог - PullRequest
1 голос
/ 04 декабря 2011

У меня есть следующее:

is_digit(X):-char_type(X,digit).

Когда я называю это так: is_digit (X).

Я получаю следующие результаты:

X='0'; 
X='1'; 
... ; 
X='9'

Мне нужно получить те же результаты, но без кавычек. Извините, если это простой вопрос, но я просто не смог найти способ обойти это. Спасибо!

Ответы [ 3 ]

2 голосов
/ 04 декабря 2011
?- between(0, 9, X).
X = 0 ;
X = 1 ;
X = 2 ;
X = 3 ;
X = 4 ;
X = 5 ;
X = 6 ;
X = 7 ;
X = 8 ;
X = 9.
2 голосов
/ 06 декабря 2011

Если вы хотите быть переносимым среди реализаций ISO Prolog, вам нужно использовать number_chars/2. atom_number/2 существует только в SWI, YAP, Ciao. Но number_chars/2 поддерживается этими 3 и IF, B, GNU, SICStus, XSB, Jekejeke.

X = '1', number_chars(N, [X]).
1 голос
/ 04 декабря 2011

Если вы хотите число, используйте номер атома (A, N). т.е.

?- char_type(X,digit),atom_number(X,N).
X = '0',
N = 0 ;
X = '1',
N = 1 ;
X = '2',
N = 2 ;
X = '3',
...