On 7 May 2017 at 02:00, Ian Lance Taylor <i...@golang.org> wrote:
> On Fri, May 5, 2017 at 10:26 AM, roger peppe <rogpe...@gmail.com> wrote:
>> On 5 May 2017 at 14:11, Michael Jones <michael.jo...@gmail.com> wrote:
>>> Just so. One cannot do boolean arithmetic with boolean variables.
>>>
>>> We have:
>>>   EQUIVALENCE ("==")
>>>   XOR ("!=")
>>>   NOT ("!")  -- George Boole's NEGATION
>>>
>>> We lack:
>>>   AND ("&") -- George Boole's CONJUNCTION
>>>   OR ("|") -- George Boole's DISJUNCTION
>>>
>>> As it happens, one can implement all the operators from the basis of
>>> NEGATION and either CONJUNCTION or DISJUNCTION, but as we lack each of the
>>> last two, one must be sure to use ints where bools would be natural.
>>
>> I don't get it. What's the difference between a&&b
>> and the hypothetical a&b for two expressions a and b,
>> assuming a and b are free of side-effects ?
>
> There is none.
>
> But sometimes b has a side-effect.  And sometimes you want that
> side-effect to be executed whether or not a is true.  Then writing `a
> && b` does not work, and the alternatives are either verbose or
> require introducing a new temporary variable name.

If you're doing it a lot, then you could always do:

  func and(x, y bool) bool { return x && y }

To be honest, I generally think that having two sub-expressions
with visible side-effects in the same expression is not great practice,
even if Go does guarantee order of evaluation.

-- 
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