On 02/10/2018 07:02 PM, Levente Uzonyi wrote:
So, a perform: {#or:. #xor:. #and:} atRandom with: b would just work for that imaginary interpreter if b were a Boolean.
Yes, that "interpreter" works just fine today, if b is a Boolean. It's the case where b is a Boolean-producing expression - such as in a "lazy" interpreter - that doesn't work without Fabio's proposed change.
I went and looked at the ANSI standard (draft), btw [1].
There, #xor: is specified as taking only a boolean.
So this would be an extension, potentially affecting portability, for what that's worth these days.
I think the performance objection has been well-refuted, and I see the consistency benefit as being real, but probably pretty limited, and I kind of don't like the potential portability implications.
All told, I'm neutral.
Cheers, Tony
[1] http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf