我想有一个谓词isPowTwo/1
,它适用于每一个二的幂。这是我的方法:
isPowTwo(N) :- N > 0, N is N /\ (-N).
它工作得很好,如果我给它整数:
?- isPowTwo(2).
true.
?- isPowTwo(4).
true.
?- isPowTwo(6).
false.
但是当我希望它用作生成器时它不起作用:
?- isPowTwo(N).
ERROR: >/2: Arguments are not sufficiently instantiated
如何编写一个按升序生成 2 次幂的谓词?
编辑:使用普通整数而不是皮亚诺数很重要。