Occam
以下の例で、インデントとフォーマットはコードを解析する上で重要である。 式は改行によって完結する。式を羅列する場合はインデントが同じでなければならない(オフサイドルール)。
プロセス間の通信はチャネルを通して行われる。あるプロセスがチャネルにデータを出力する場合 ! を使い、チャネルからデータを入力するには ? を使う。入出力は通信相手がレディ状態となってデータ送受信が可能になるまでブロックされる。 以下の例では、 c が変数、keyboard と screen がチャネルを示している。
SEQはそれに続く式のリストを逐次的に実行することを示す。他のプログラミング言語のように逐次実行が暗黙のうちに採用されることはない。以下の例で「:=」は代入である。
PARはそれに続く式のリストを並列的に実行してもよいことを示す。
ALTは選択実行を可能とする。ガード部をもつコマンドのリストが後に続き、ガード部はboolean値を返す条件式と入力チャネル式(どちらも省略可能)から成る。各ガードは条件が真でかつ入力チャネルから入力があったときに成功する。実行時には複数のガードが同時に成功してもかまわない。
この例は c1 および c2 のチャネルからデータを読み込んで、ひとつの merged というチャネルにそれを渡すものである。 countN が 100 になると、対応する入力チャネルからの入力は受け付けなくなる。status チャネルからリクエストがあると、c1 および c2 から何回データを受け取ったかが out チャネルに出力される。
Occam 2.5は、Kent Retargettable Occam compiler (KRoC)に与えられた一般的な名称である。 このバージョンは以下のような拡張を Occam 2.1 に加えている。
ネストしたプロトコル
実行時プロセス生成
移動可能なチャネル、データ、プロセス
再帰
プロトコル継承
配列生成
拡張されたランデブー機能
KRoC チームはコンパイラを開発しWebサイトに公開している。π計算(en:π-calculus)を使用していることから、最近チームはコンパイラの名称をOccam-Piに変更した。