If Else in Prolog

Branching with if and else in Prolog is implemented using pattern matching and the -> (if-then-else) operator.

main :-
    % Here's a basic example.
    (7 mod 2 =:= 0 ->
        writeln('7 is even')
    ;
        writeln('7 is odd')
    ),

    % You can have an `if` statement without an else.
    (8 mod 4 =:= 0 ->
        writeln('8 is divisible by 4')
    ; true),

    % Logical operators like `,` (AND) and `;` (OR) are often useful in conditions.
    (8 mod 2 =:= 0 ; 7 mod 2 =:= 0 ->
        writeln('either 8 or 7 are even')
    ; true),

    % In Prolog, we can use pattern matching for conditional logic.
    % This is similar to a statement preceding conditionals in other languages.
    check_num(9).

check_num(Num) :-
    (Num < 0 ->
        format('~w is negative~n', [Num])
    ; Num < 10 ->
        format('~w has 1 digit~n', [Num])
    ;
        format('~w has multiple digits~n', [Num])
    ).

To run this program:

?- main.
7 is odd
8 is divisible by 4
either 8 or 7 are even
9 has 1 digit
true.

Note that in Prolog, we use pattern matching and the -> operator for conditional logic. The structure is (Condition -> ThenClause ; ElseClause). Also, Prolog uses , for logical AND and ; for logical OR.

There is no direct equivalent to a ternary operator in Prolog, as conditional logic is typically handled through pattern matching and the -> operator.

Markdown formatting has been applied to the code and explanations, making it suitable for Hugo. The structure and explanations have been maintained while adapting to Prolog’s syntax and conventions.

查看推荐产品

Comments powered by Disqus