If statement 用或| |和&&;检查

If statement 用或| |和&&;检查,if-statement,prolog,If Statement,Prolog,如何在序言中制作这样的内容: if(A > -1 && A > 0){ //DoSomething } else{ //DoAnotherThing } 我试过这个: positive([], []). %Tudo Vazio positive([H1|T1], [H2|T2]) :- H1 > -1, H1 > 0 -> H2 = H1, positivos(T1, T2). 请注意,Prolog是一种逻辑编程语言,与C或等效语言

如何在序言中制作这样的内容:

if(A > -1 && A > 0){
   //DoSomething
}
else{
   //DoAnotherThing
}
我试过这个:

positive([], []). %Tudo Vazio
positive([H1|T1], [H2|T2]) :- H1 > -1, H1 > 0 ->  H2 = H1, positivos(T1, T2).

请注意,Prolog是一种逻辑编程语言,与C或等效语言不同

Prolog将“成功”或“失败”检查您向它抛出的任何内容。 因此,如果你想检查A是否为正(我想你想这样做),你可以简单地写:

positive(A) :- A > 0.
如果要检查列表中的所有数字是否为正数,则可以通过列表递归,使用前面的谓词检查其所有成员,如:

positive([]).
positive([H|T]) :-
     positive(H),
     positive(T).
Prolog中的“if/then”可以用
编写
的序言

positive(A) :-
    ( 
        A > 0,  print('A is positive')
        ; 
        A < 0,  print('A is negative')
        ; 
        A == 0, print('A is zero')
    ).
阳性(A):-
( 
A>0,打印('A为正')
; 
A<0,打印('A为负片')
; 
A==0,打印('A为零')
).

通过询问prolog
positive(1)
positive(-1)

if(A>-1&&A>0)
是否等同于
if(A>0)
,以简化问题。你说你“试过这个:…”,那么发生了什么?请注意运算符优先级。比较
->
的优先级。Prolog不像C。如果你有,
p:-p1,p2,…,pn
这意味着,
p
是真的,如果
p1
是真的,
p2
是真的,并且。。。对于变量的某些实例化。你并不真的需要
->
。你真的需要展示你期望得到什么以及你得到了什么。这包括首先消除任何编译器错误和警告始终出现在行的前面,而不是末尾。这是因为
看起来与
几乎相同,
我还建议添加括号,并在语法缩进中反映语义嵌套。有关缩进析取的合理方法,请参见的第100行。事实上,我建议比本例中的缩进宽度多一点。重点是放置
在行的前面,而不是像您现在再次做的那样,在末尾。很容易出错
对于
,如果将两者都放在末尾。