如何在不使用integer/1
(HW)的情况下检查Prolog中的字符是否为数字?
我可以使用atomic/1
,但它对我没什么帮助,因为它也会返回true
除了数字之外什么都没有。
2 ?- atomic(1).
true.
3 ?- atomic(asasa).
true.
4 ?-
此致
答案 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).
....
另一个想法是尝试使用1
将is
添加到数字中;但这并不总能保证它是一个整数。