0

我有以下内容:

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

当我这样称呼它时:is_digit(X)。

我得到以下结果:

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

我需要得到相同的结果,但没有引号。对不起,如果这是一个简单的问题,但我一直无法找到解决这个问题的方法。谢谢!

4

3 回答 3

2
?- between(0, 9, X).
X = 0 ;
X = 1 ;
X = 2 ;
X = 3 ;
X = 4 ;
X = 5 ;
X = 6 ;
X = 7 ;
X = 8 ;
X = 9.
于 2011-12-03T23:39:35.763 回答
1

如果您想要数字,请使用 atom_number(A,N)。IE

?- char_type(X,digit),atom_number(X,N).
X = '0',
N = 0 ;
X = '1',
N = 1 ;
X = '2',
N = 2 ;
X = '3',
于 2011-12-03T20:57:13.097 回答
1

如果你想在 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]).
于 2011-12-06T02:32:22.613 回答