conditional choice(条件選択)

conditional choice "if b then P else Q" は bがTRUEの場合プロセスPが、bがFALSEの場合はプロセスQが実行される。例えば、ジュースの残数を保持している自販機VMRの例を考える。

channel coin, juice
VMCNT(n) = coin -> juice -> VMCNT(n-1)
VMR = VMCNT(10)

n で残数を表わしているつもりであるが、このままでは、VMCNT(10),VMCNT(9), ・・ ,VMCNT(1),VMCNT(0),VMCNT(-1)・・・と変化してしまう。そこで、残数n によりプロセスを選択することにする。

VMCNT(n) =  if (n>0) then                   --(n>0)の括弧は省略可
               coin -> juice -> VMCNT(n-1)  -- n>0 の場合は先と同じ
            else
               SKIP                         -- n<=0 の場合は終了

プロセスcoin->juice->VMCNT(n-1) と SKIP の選択が n の値により行われる。
VMCNT(10)は10回販売すると、VMCNT(0) = SKIP となる。