Hoare, Communicating Sequential Processes, and JCSP

Mike Williams <>
Wed Feb 12 14:42:07 CET 2003

I think that you will find that "selective message reception" in Erlang comes
from EriPascal which in turn comes from CHILL. Of course CHILL has at least four
mutually incompatible methods for processes to send messages (or exhange 
information) with each other.

The big difference  between Erlang and CHILL/EriPascal is that Erlang's pattern
matching allows you use any component (or combination of components) to select
which messages you want to receive and in which order. CHILL/EroPascal have the
concept of a Signal number (an integeter constant) which is one of items in the 
header of a message (called signal in these languages). I am sure that Bjarne
and Göran can give you the full details.

Of course Ada also tried to use selective reception in "select", but mesed it
all up by making communication synchronous. This gave rise to all sorts of
wierd and wonderful compiler optimisations (Haberman/Nassi) where the compiler
detects that the propgrammer is using extra Ada tasks to do asycnhronous message
passing and optimises the code to replace these task by a semaphore!

This is a wonderful example of faultly thinking leading to a unecssary problem
and research being directed to solving that unecessary problem. A somewhat far
fetched parallel is Java being used to solve the unecessary problems created
by C++ :-)


More information about the erlang-questions mailing list