[erlang-questions] Pass a pattern to a function

Jachym Holecek freza@REDACTED
Tue Feb 10 19:18:59 CET 2009


# Sten Gruener 2009-02-10:
> I try to write a function to scan the message queue and discard matched
> messages.
> Like this:
> discard(Pattern) ->
>     receive
>         Pattern ->
>             discard(Pattern)
>     after 0 ->
>         ok
>     end.
> the problem is, that I cannot call discard({_, {msg}}) since _ is a wildcard
> representation. Are there any solutions?

Patterns aren't first class objects so I'm afraid you're SOL. You could
implement your discard/1 as a parse transform, but under the hood that
would just create per-pattern-specialised discard functions. Alternatively,
it would be doable with a macro, but I can't imagine that not being ugly.

	-- Jachym

More information about the erlang-questions mailing list