a side-effect free test for the executability of a non-rendezvous receive.
name ? '['
name ?? '['
A channel poll operation looks just like a
statement with square brackets enclosing the list of message fields.
It returns either
depending on the executability of the corresponding receive
(i.e., the same operation written without the square brackets).
Because its evaluation is side-effect free, this form
can be used freely in expressions or even assignments,
where a standard
operation cannot be used.
The state of the channel, and all variables, is guaranteed
to be the same before and after these types of condition are
qname?[ack,var] && timeout
places an additional constraint on a
Channel poll operations do not work on rendezvous
channels, because synchronous channels never store
messages that a poll operation could refer to.
Messages are always passed instantly from sender to receiver
in a rendezvous handshake.
To simulate a poll operation on a synchronous channels, see