且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Prolog 比较并有条件地返回 true 或 false

更新时间:2022-12-19 22:14:18

comp_lims([], []).
comp_lims([H1|T1], [H2|T2]) :-
    H1 = [Left, Right],
    ( bet(Left, Right, H2) -> comp_lims(T1, T2); fail ).

更好的版本:

comp_lims([], []).
comp_lims([ [Left, Right] | T1], [H2|T2]) :-
    bet(Left, Right, H2), comp_lims(T1, T2).

  1. 模式匹配不只是[Head|Tail]形式,你可以用[A, B]来匹配两个元素列表.
  2. 你可以写A ->乙;失败A, B​​code> 一样(也有一个隐含的削减,但你现在可以忽略它).
  1. Pattern matching need not just be [Head|Tail] form, you can just use [A, B] to match two element lists.
  2. You can write A -> B; fail as just A, B(there is an implicit cut too, but you can ignore it for now).

同样在 bet/3 中,你可以这样做:

Also in bet/3, you can just do :

bet(L, R, B) :-
    B-L > 0,
    R-B > 0.

> 隐式计算双方,因此您不需要为它使用单独的 is.

> implicitly evaluates both sides, so you do not need to use separate is for it.