( --------------------- version #1 --------------------- ) [ not swap not 1 << | ]'[ swap peek do ] is if2.1 ( b b --> ) [ if2.1 [ [ say "true and true" ] [ say "true and false" ] [ say "false and true" ] [ say "false and false" ] ] cr ] is task.1 ( b b --> ) ( --------------------- version #2 --------------------- ) [ not swap not 1 << | dup 0 > iff ]else[ ]else[ 1 - dup 0 > iff ]else[ ]else[ 1 - 0 > iff ]else[ ]else[ ] is if2.2 ( b b --> ) [ if2.2 [ say "true and true" ] else [ say "true and false" ] else [ say "false and true" ] else [ say "false and false" ] cr ] is task.2 ( b b --> ) ( ------------------------ demo ------------------------ ) true true task.1 true false task.1 false true task.1 false false task.1 cr true true task.2 true false task.2 false true task.2 false false task.2