解析从字符到数字Prolog



我有以下内容:

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

当我这样调用它时:is_digit (X) .

我得到以下结果:

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

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

?- between(0, 9, X).
X = 0 ;
X = 1 ;
X = 2 ;
X = 3 ;
X = 4 ;
X = 5 ;
X = 6 ;
X = 7 ;
X = 8 ;
X = 9.

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

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

如果您想在ISO Prolog实现之间进行移植,您需要使用number_chars/2atom_number/2仅存在于SWI、YAP、Ciao中。但number_chars/2是由这3和IF, B, GNU, SICStus, XSB, Jekejeke支持的。

?- X = '1', number_chars(N, [X]).
   X = '1', N = 1.

最新更新