Package jason.stdlib

Class if_then_else

java.lang.Object
jason.asSemantics.DefaultInternalAction
jason.stdlib.if_then_else
All Implemented Interfaces:
InternalAction, java.io.Serializable

@Manual(literal="if (formula) { plan_body1 } else { plan_body2 }",
        hint="implementation of \"if then, elif then, and else\"",
        argsHint="the formula that when true makes the plan_body1 be executed, otherwise plan_body2 will be executed",
        argsType="logical formula",
        examples={"if (vl(X) & X > 10) { .print(\"value > 10\"); }: where vl(X) is a belief","if (e(1)) { .print(a); } elif (e(2)) { .print(b); } elif (e(3)) { .print(c); } else { .print(d); }"},
        seeAlso="")
public class if_then_else
extends DefaultInternalAction
Implementation of if.

Syntax:

  if ( logical formula ) {
     plan_body1
  [ } else { plan_body2 ]
  [ } elif ( logical formula  ) { plan_body3 ]
  }

if logical formula holds, plan_body1 is executed; otherwise, plan_body2/3 is executed.

Example:

+event : context
  <- ...
     if (vl(X) & X > 10) { // where vl(X) is a belief
       .print("value > 10");
     }
     ...
     if   (e(1)) { .print(a); }
     elif (e(2)) { .print(b); }
     elif (e(3)) { .print(c); }
     else        { .print(d); }
     ...
The unification is changed by the evaluation of the logical formula, i.e., X might have a value after if.

See Also:
Serialized Form