带有“或”条件的Prolog if / else语句

时间:2013-02-18 21:30:24

标签: if-statement prolog

我是Prolog的新手,我正在尝试使用“或”条件编写if / else语句。所以为了演示,我想要像:

 gothrough([H|T], B, C):-
    (  T == [] or H == 'then'  %if either the tail is an empty list or if H == "then", do the following%
    -> append(H,B,B), outputs(B,C)
    ;  append(H,B,B), gothrough(T, B, C) %else%
    ).

然而,这种实施不起作用;有没有明显的方法可以做到这一点,我没有得到?

谢谢!

1 个答案:

答案 0 :(得分:1)

在Prolog中,使用“;” for或and“,”for and。

gothrough([H|T], B, C):-
    (  (T == [] ; H == 'then')  %if either the tail is an empty list or if H == "then", do the following%
    -> append(H,B,B), outputs(B,C)
    ;  append(H,B,B), gothrough(T, B, C) %else%
    ).

请注意,当H与[]不同时,追加(H,B,B)总是失败。

你可以写

 gothrough([H|T], B, C):-
    append(H,B,B), 
    (  (T == [] ; H == 'then')  %if either the tail is an empty list or if H == "then", do the following%
    -> outputs(B,C)
    ;  gothrough(T, B, C) %else%
    ).