如何在不使用integer/1
(HW)的情况下检查字符是否为Prolog中的数字?
我可以使用atomic/1
,但它没有多大帮助,因为它也返回true
指向除数字以外的任何东西。
2 ?- atomic(1).
true.
3 ?- atomic(asasa).
true.
4 ?-
对
使用char_type(X,digit).
?- char_type('3',digit).
true.
?- char_type('a',digit).
false.
你认为数字是什么?只是整数?十六进制数字?如果您只想识别纯整数([0-9]+
),您可以将数字转换为列表,然后检查列表中的每个成员是否为数字:
is_digit(1).
is_digit(2).
....
另一个想法是尝试使用is
将1
添加到数字;但这并不能保证它总是整数