-- mobprocex1.occ -- mobile process example code -- Copyright (C) 2004 Fred Barnes -- GPL >= 2.0 PROC plus (CHAN INT in.0?, in.1?, out!) WHILE TRUE ALT INT v: in.0 ? v IF v = (MOSTNEG INT) SEQ out ! v SUSPEND TRUE INT w: SEQ in.1 ? w out ! v + w INT v: in.1 ? v INT w: SEQ in.0 ? w WHILE w = (MOSTNEG INT) SEQ out ! w SUSPEND in.0 ? w out ! v + w : PROC delta (CHAN INT in?, out.0!, out.1!) WHILE TRUE INT v: SEQ in ? v IF v = (MOSTNEG INT) SEQ out.0 ! v SUSPEND TRUE SEQ out.0 ! v out.1 ! v : PROC prefix (VAL INT n, CHAN INT in?, out!) SEQ out ! n WHILE TRUE INT v: SEQ in ? v IF v = (MOSTNEG INT) SUSPEND TRUE out ! v : PROC TYPE PT IS (CHAN INT in?, out!): MOBILE PROC integrate (CHAN INT in?, out!) IMPLEMENTS PT CHAN INT a, b, c: PAR plus (in?, c?, a!) delta (a?, b!, out!) prefix (0, b?, c!) : PROC pt23 (CHAN BYTE scr!) MOBILE PT x: SEQ x := MOBILE integrate SEQ i = 0 FOR 10 INT v: SEQ CHAN INT c, d: PAR SEQ c ! 1 c ! MOSTNEG INT d ? v x (c?, d!) scr ! 'a' PLUS (BYTE v) scr ! '*n' :