[eeps] Match specs and receive

Andras Georgy Bekes <>
Wed Aug 6 18:15:10 CEST 2008

On Friday 11 July 2008, Richard A. O'Keefe wrote:
> Fredrik Linder asked about the possibility of
>         receive MatchSpec(X) -> ...
> and
>         function(MatchSpec(X) = V) -> ...
> get something that compiles 
> a MatchSpec to a recogniser 'fun' (or a receiver 'run').
> This may well be _better_ than putting it in the syntax,
> because it lets you use compiled (with HiPE, even native-
> compiled) code rather than interpreting MatchSpecs.
I don't know what Fredrik would use these receiver fun's, but I think 
your proposal lacks something that his can do.

With his proposal I could (just for example) write a gen_server variant 
that does not have to accept each message as they arrive, but can 
effectively do selective receive.

For example, if the handle_call function in the callback module returns
{reply, Reply, NewState, MessageSpec}

then the behavior module could receive only the "interesting" messages 
and leave everything else on the message queue, while it could, --- at 
the same time --- receive system messages, etc. as well.

So the point is that if matchspecs are allowed in receives, then they 
can be combined with "normal" patterns and with other matchspecs.


More information about the eeps mailing list