user4067810
user4067810

Reputation:

Conditional Statements in Prolog

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

Answers (1)

Sergii Dymchenko
Sergii Dymchenko

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

Related Questions