If the timeout is zero do a non-blocking check for matching messages. A
non-zero timeout is applied only when waiting for incoming messages (that is,
after we have checked the messages that are already in the mailbox).

Logging

say message sends a message (time, pid of the current process, message)
to the process registered as logger. By default, this process simply
sends the string to stderr. Individual Cloud Haskell backends might
replace this with a different logger process, however.