我是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%
).
然而,这种实施不起作用;有没有明显的方法可以做到这一点,我没有得到?
谢谢!
答案 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%
).