[eeps] Match specs and receive

Fredrik Linder <>
Tue May 6 15:47:03 CEST 2008


Hi

Any chance that something like the following will be implemented in the
Erlang langugage?

function(MatchSpec) ->
   receive
       MatchSpec(Result) ->
            Result
   end.

Result could be a [{var(), value()}] list, where var() somehow is specified
in the given MatchSpec. MatchSpec could as well be "used like a fun";

function(MatchSpec) ->
    receive
        MatchSpec(A, B, C) ->
            [{a, A}, {b, B}, {c, C}]
    end.

I happens every now and then that I write code that is data driven, in a way
where I have a specification and an engine executing this specification. Not
seldom this ends up in me wanting to receive specific messages from the
process queue.

Another use for a "boundable" match spec is in function heads:

function(MatchSpec(Result) = Value, [MatchSpec | T]) ->
   %% something

This too I find lacking in the Erlang language.

It is usually possible to find a workaround for this that is less flexible
and results in a lot more code.

/Fredrik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/eeps/attachments/20080506/4163d5a7/attachment.html>


More information about the eeps mailing list