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 となる。