[erlang-questions] -protocol declartion idea, worth an EEP?
ok@REDACTED
ok@REDACTED
Mon Jun 5 15:16:36 CEST 2017
> The problem I see is simple. If you have an irrefutable pattern,
> it covers *all* of your receive specifications:
>
> receive
> A -> ok
> end.
Or more generally, the "catch-all" idiom
receive
good1 -> ...
; good2 -> ...
; _ -> loop(...) % discard bad messages
end
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.
>
>> If you want to specify that a function doesn't receive
>> anything, use 'receive none()'; any empty OptRcv says nothing
>> about the function's protocol.
>
> I disagree. This would mean that all "pure" functions require
> annotations. This seems pretty tedious.
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.
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.
More information about the erlang-questions
mailing list