[erlang-questions] Ideas for a new Erlang
Sven-Olof Nystr|m
svenolof@REDACTED
Thu Jun 26 09:32:53 CEST 2008
Ulf Wiger writes:
> 2008/6/25 Vlad Dumitrescu <vladdu55@REDACTED>:
> >
> > I'm not sure I get the reason why channels would be useful. I see two
> > possibilities:
> > a) for performance, when each channel has a different mailbox
> > b) to simplify the code/architecture
>
> I don't think channels would simplify the code, but they might make
> it easier to reason about it. The thing that selective receive brings to
> the table is scoped message reception. The Erlang approach of
> pattern-matching on a single message queue is extremely flexible,
> but it's difficult to "prove" the code correct. For example, it is quite
> possible for a piece of code to consume someone else's 'DOWN'
> message, by ignoring the Ref part. If channels followed the same
> scoping rules as variables (and channels aren't just syntactic sugar
> on top of a single message queue), a function could not steal someone
> else's messages.
Yes. This is actually one of the reasons I am interested in
alternatives to selective receive. Any kind of formal reasoning about
process communication would benefit from the channel concept. I didn't
mention it in the paper since I was concerned that a discussion would
be too complicated. Also, I thought that the reasons I gave were
sufficient.
As you say, the use of selective receive makes it harder to determine
the set of messages that should (and shouldn't) arrive in the mailbox
of a particular process.
> Not that these kinds of bugs are commonplace in Erlang. It's quite
> easy to avoid them using simple conventions. But there is, after all,
> a difference between "easy to avoid" and "impossible", which can
> sometimes be significant.
No, it seems that the Erlang developers have learned how to live with
selective receive.
> Haskell has channels, and so does .NET (mailbox objects). There is
> therefore an opportunity to compare programs and try to determine
> whether programming with channels makes for more or less
> readable code than erlang's selective receive.
OK.
Sven-Olof
More information about the erlang-questions
mailing list