我如何将swi-prolog中的true和false分别映射到1和0? 我需要评估像真和假的那样的零和零(就像在真值表中一样)。 我遇到了一些困难,因为每当我尝试使用1作为逻辑值时,swi-prolog就会把它当作善意并返回错误。
我想尝试这样的事情
0 :- false.
1 :- true.
当我查询逻辑“和”操作时,它应该返回应用于这两个值的逻辑和操作。
? my_and_operation(1, 0).
false
? my_and_operation(1, 1).
true
答案 0 :(得分:3)
完成所需操作的简单方法就是确定一些isTrue/1
和isFalse/1
谓词。
isTrue( 1 ).
isFalse( 0 ).
booleanAnd( X, Y ) :-
isTrue( X ),
isTrue( Y ).
使用。
?- booleanAnd( 1, 0 ).
false.
?- booleanAnd( 1, 1 ).
true.
答案 1 :(得分:1)
或者你也可以这样做:
map(1, true).
map(0, false).
boolAnd(X, Y) :-
maplist(map, [X, Y], [A, B]),
(A, B).
boolOr(X, Y) :-
maplist(map, [X, Y], [A, B]),
(A; B).
答案 2 :(得分:0)
更简单的方法:
my_and_operation(X, Y) :-
X == 1, Y == 1.
答案 3 :(得分:0)
真正简单的解决方案:
my_and_operation(1, 1).