Type safe message passing programs. Parameterised over the type of
message which can be send, and the return type.
Return whether a message is waiting in the queue
Return whether a message is waiting in the queue from a specific sender
Get current process ID
Receive a message - blocks if there is no message waiting
Receive a message from specific sender - blocks if there is no message waiting
Fails if the sender is no longer running
receive a message, and return with the sender's process ID.
Send a message to another process
Returns whether the send was unsuccessful.