检查字符是否是Prolog中的数字?如何实现整数/ 1?

时间:2013-01-20 12:35:45

标签: integer char prolog atomic

如何在不使用integer/1(HW)的情况下检查Prolog中的字符是否为数字?

我可以使用atomic/1,但它对我没什么帮助,因为它也会返回true

除了数字之外什么都没有。

2 ?- atomic(1).
true.

3 ?- atomic(asasa).
true.

4 ?- 

此致

2 个答案:

答案 0 :(得分:3)

使用char_type(X,digit).

?- char_type('3',digit).
true.

?- char_type('a',digit).
false.

答案 1 :(得分:1)

嗯,您认为一个数字是什么?只是整数?十六进制数?如果您只想识别普通整数([0-9]+),您只需将数字转换为列表,然后检查列表中的每个成员是否为数字:

is_digit(1).
is_digit(2).
....

另一个想法是尝试使用1is添加到数字中;但这并不总能保证它是一个整数。