[erlang-questions] -protocol declartion idea, worth an EEP?

Joe Harrison joe@REDACTED
Mon Jun 5 16:56:01 CEST 2017

> Or more generally, the "catch-all" idiom
>    receive
>       good1 -> ...
>     ; good2 -> ...
>     ; _ -> loop(...) % discard bad messages
>    end

Yes, definitely. I was assuming that A was unbound.

> I was thinking of having a macro ?CATCHALL for this,
> with different translations for ordinary compilation
> (_) and checking (something else). Or perhaps more
> simply, treating a single wild-card in receive as a
> special case.

You're right. Wildcards are definitely a special case that
can hide a lot of (dangerous) communication problems.
Though I'm not clear where this macro should be: in the
protocol spec or the receive?

> The problem is that right now fun() and -spec say *nothing*
> about reception. Backwards compatibility seems to require
> not changing that.
> The idea was that a checker should *infer* 'receive none()'
> for pure functions, and that this should *refine* a given
> -spec.

Oh right. That makes much more sense :)

> One thing I was after was that you should normally require
> just one -protocol declaration per process, with the
> receive part of the functions it calls being inferred.

Yep! It seems like a good idea to make these compositional.

- Joe

More information about the erlang-questions mailing list