channel in,out : {0..9} JOBS = {0..9} channel imprime: JOBS channel trabalhar TAM = 10 Buffer(S) = if S == <> then in?x -> Buffer() else if #S < TAM then in?x -> Buffer(S^) [] out! head(S) -> Buffer (tail(S)) else out! head(S) -> Buffer(tail(S)) -- Versão usando casamento de padrão Buffer(<>) = in?x -> Buffer() Buffer(^t) = if #(^t) < TAM then in?x -> Buffer(^t^) [] out! h -> Buffer(t) else out! h -> Buffer(t) Impressora = out?x -> imprime!x -> Impressora Computador = trabalhar -> Computador |~| |~| j:JOBS @ in!j -> Computador SYSTEM = ( Computador [| {| in |} |] Buffer(<>)) [| {| out |} |] Impressora ------------ OUTRO EXERCICIO NUMS = {1..15} chanel sorteio : NUMS Bingo = Sorteador [| |] ( Bingueiro(1) ||| Bingueiro(2) ||| Bingueiro(3) ||| Bingueiro(4) ||| Bingueiro(5) ) Sorteador(<>) = (|~| num: NUMS @ sorteio! num -> Sorteador()) Sorteador(a^) = (|~| num: NUMS @ sorteio! num -> 153.492.924-04