首页 文章

swiprolog map false为零且为true

提问于
浏览
0

我如何将swi-prolog中的true和false分别映射到1和0?我需要评估像真和假的那样的零和零(就像在真值表中一样) . 我有一些困难,因为每当我尝试使用1作为逻辑值swi-prolog dosent善待并返回错误 .

我想尝试这样的事情

0 :- false.
1 :- true.

当我查询我的逻辑"and"操作时,它应该返回应用于这两个值的 logical and 操作 .

? my_and_operation(1, 0).
false

? my_and_operation(1, 1).
true

4 回答

  • 1

    做你需要的简单方法就是确定一些 isTrue/1isFalse/1 谓词 .

    isTrue( 1 ).
    isFalse( 0 ).
    
    booleanAnd( X, Y ) :-
        isTrue( X ),
        isTrue( Y ).
    

    用法 .

    ?- booleanAnd( 1, 0 ).
    false.
    
    ?- booleanAnd( 1, 1 ).
    true.
    
  • 0

    或者你可以这样做:

    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).
    
  • 3

    更简单的方法:

    my_and_operation(X, Y) :-
     X == 1, Y == 1.
    
  • 0

    真正简单的解决方案:

    my_and_operation(1, 1).
    

相关问题