def server [channel:^Int ack:^[]] = channel?i = (channel!(i+1) | ack?[] = server![channel ack] ) new lock:^[] def client [chan:^Int ack:^[] n:Int] = lock?[] = (chan!n | chan?num = (ack![] | lock![] | printi!num) run( new ch1:^Int new ack:^[] lock![] ( server![ch1 ack] | client![chan ack 3] | client![chan ack 5] )