On Sun, Dec 31, 2017 at 12:48 PM dc0d <kaveh.shahbaz...@gmail.com> wrote:

> Indeed everything works according to the specs. That is what is being
questioned (the specs).

Well, questioning the specification and expecting unspecified behavior
seems like two different things.

> This behavior for case clause of select statements have different
semantics than case clause of switch statement.
>
> While the latter gets evaluated lazily (short circuited), the former gets
evaluated eagerly - inconsistent semantics for looking-the-same syntax.

I disagree. A && B does not look-the-same to me compared to A <- B.
Actually, I see nothing in common. One is an expression, the other is a
statement, etc.

> Here all the values will get prepared first, whether or not they are
going to be used. And only after this step, the select statement would
check if a channel is nil or not.

That's a fundamentally important property of the select statement.

> While it should be other way around. First the select statement should
check if a participant channel is nil. And only when a channel is not nil,
the payload should get evaluated.

That would ruin _everything_. The very purpose of the select statement is
to _proceed_ the communication _as soon as possible_. If the select will
first detect a ready-to-send channel and only after that evaluate the send
value, evaluation of it may block! The whole concept then collapses
immediately.

> This semantic works in reverse.

I disagree.

-- 

-j

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to