declare fun {NewQueue} X TS={New TupleSpace init} proc {Insert X} N S E1 in {TS read(q q(N S X|E1))} {TS write(q(N+1 S E1))} end fun {Delete} N S1 E X in {TS read(q q(N X|S1 E))} {TS write(q(N-1 S1 E))} X end in {TS write(q(0 X X))} queue(insert:Insert delete:Delete) end