从字符解析为数字Prolog

问题描述 投票:0回答:3

我有以下内容:

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

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

我得到以下结果:

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

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

parsing prolog iso-prolog
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.

1
投票

如果你想要数字,请使用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',

0
投票

如果你想在 ISO Prolog 实现之间移植,你需要使用

number_chars/2
atom_number/2
仅存在于 SWI、YAP、Ciao 中。但是
number_chars/2
得到了这 3 个以及 IF、B、GNU、SICStus、XSB、Jekejeke、Scryer、Trealla、Ichiban、ECLiPSe、Tau、X、Minerva 的支持。

?- X = '1', number_chars(N, [X]).
   X = '1', N = 1.
© www.soinside.com 2019 - 2024. All rights reserved.