Larry wrote:
I don't think we can allow this situation to stand. Either we have to make != and !~ and ne transform themselves via "not raising", or we have to disallow negative comparisons on junctions entirely.
Opinions?
Making them DWIM here would be a mistake, since the dwimmery would disappear if anyone refactored:
if $note != $do | $re | $me {...}
to the supposedly identical:
if $note != $do || $note != $re || $note != $me {...}
That would be a bad outcome...pedagogically as well as from a maintainability point-of-view.
I'd say we have to disallow negative comparisons against explicit (compile-time) junctions. That is, against expressions that explicitly use |/&/^ or any/all/one/none.
Negative comparisons against implicit (run-time) junctions:
if $note != $bad_note {...}
still have to be allowed.
Damian