[erlang-questions] [RFC] smarter receive

Roger Larsson <>
Fri Nov 10 16:06:38 CET 2006


On Friday 10 November 2006 04:14, Jay Nelson wrote:
> I wasn't sure that this message was about "proposal to enhance message
> receive"
> because the thread name changed.  You quoted a book I never mentioned and
> then had code that looked very similar to mine.  I assume this is
> somehow related
> and will try to answer.

Yes, it is another proposal.

>
>  > Why not remember this position for next time?
>  > Since the test is constant none of the already scanned messages will
>
> match
>
>  > next time either!
>
> This only helps in the case of constant data.  If there is a variable
> that could change because it is a loop argument or the result of
> another receive, then you must resort back to the full scanning method.  
> This would solve the problem in some cases, but not all, while making
> the implementation more complex. 

I know - I wrote that too :-)

OK, lets try to simplify as much as possible, what is the most common case?

I would guess it is: Tuple with first element a constant atom.
(It would be quite easy to rewrite code in this way... easier than rewriting 
code to match your proposal anyway)

Each receive statement needs to save a pointer to how far in the queue
it has searched or each match could cache the same info. Any receive with
a match all would not need to save anything.

>
>>  - - -
>
> You don't want to change the fundamental semantics of receive in that
> messages are scanned from earliest to latest, and that the order of pattern 
> clauses in a receive statement matters
I never intended to change the semantics. Implementation could change... 

/RogerL



More information about the erlang-questions mailing list