Reputation:
I have just started prolog and was wondering if we can implement conditional statements like(if.else)in Prolog also and if so how?? Can someone implement this code in Prolog just for an example-
if(a==2)
print("A is 2");
if(a==3)
print("A is 3");
else
print("HAhahahahaah");
Ok so I am doing this after Sergey Dymchenko answer.
Test(A) :-read(A),
( A =:= 2 ->
write('A is 2')
;
( A =:= 3 ->
write('A is 3')
;
write('HAhahahahaah')
)
).
This is giving right answer except this is displaying A = 2 also which I dont want(If I give input 2).
Upvotes: 2
Views: 12810
Reputation: 7209
One way to do it:
test(A) :-
( A =:= 2 ->
write('A is 2')
; A =:= 3 ->
write('A is 3')
; write('HAhahahahaah')
).
Another way to do it:
test(2) :-
write('A is 2').
test(3) :-
write('A is 3').
test(A) :-
A \= 2, A \= 3,
write('HAhahahahaah').
There are differences with these two codes, like choice points, behavior when A is not instantiated, and if A is treated as a number or not. But both will work the same way (except choice points left) and as expected with queries test(2).
, test(3).
, test(42).
Upvotes: 5