-- SmallExample.mesa --Last edit: 14 July 1981 1:58 pm PDT (Tuesday) SmallExample: MONITOR = BEGIN speaker: DEVICE[n:CARDINAL] = { OUT out:Boolean CONTROL FOR i IN [1..n] DO out _ TRUE; out _ FALSE ENDLOOP } ; listener: DEVICE = { IN in: Boolean CONTROL DO WHEN in UP: writestring[ " up "]; WHEN in DOWN: writestring[ " down "]; ENDLOOP }; CIRCUIT { COMPONENTS s: speaker[10], l:listener NODES c: Boolean CONNECTIONS s[out: c], l[in: c] } END. SmallExample: MONITOR = BEGIN speaker: PROCEDURE[n:CARDINAL, out:BoolConnector.BooleanConnector] = {FOR i IN [1..n] DO BoolConnector.put[out , TRUE]; BoolConnector.put[out , FALSE] ENDLOOP}; listener: PROCEDURE[in: BooleanConnector] = { DO BoolConnector.GetNew[in, TRUE]; writestring[ " up "]; BoolConnector.GetNew[in, FALSE]; writestring[ " down "]; ENDLOOP }; c: BoolConnector.BooleanConnector _ BoolConnector.Create[]; s: PROCESS _ FORK speaker[10,c]; l: PROCESS _ FORK listener[c]; [] _ JOIN s; [] _ JOIN l; END. > > otherwise > PROCEDURE [ParameterList@CompList/1@Complist/2] = Block