I have stumbled across an odd thing with (/=) operator. 1 /= 0 produces 1 and 1 /= 1 produces False. (==) works as expected with Boolean. See the Logs in the referenced ellie.
Seeing this with Elm 0.19, latest Chrome on a Mac. Is this a known issue?
I have stumbled across an odd thing with (/=) operator. 1 /= 0 produces 1 and 1 /= 1 produces False. (==) works as expected with Boolean. See the Logs in the referenced ellie.
Seeing this with Elm 0.19, latest Chrome on a Mac. Is this a known issue?
I think that this is this bug: Inequality operator returns value of wrong type if one operand is 0 · Issue #1810 · elm/compiler · GitHub and that it is fixed in 0.19.1-beta-1:
---- Elm 0.19.1 ----------------------------------------------------------------
Say :help for help and :exit to exit! More at <https://elm-lang.org/0.19.1/repl>
--------------------------------------------------------------------------------
> 1/=0
True : Bool
> 1/=1
False : Bool
Quoting Evan Czaplicki:
For the record, this is due to an optimization that relied on truthiness in JS.
@dmy thanks for pointer and good to know it will be fixed in the next release.
I think the boolean logic is still always correct though, it just looks weird when you inspect it.
No, boolean logic is not always correct.
For example (12 /= 0) == (21 /= 0) evaluates to False in Elm 0.19.
Thankfully that’s also (incidentally?) fixed in 0.19.1:
> (12 /= 0) == (21 /= 0)
True : Bool
This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.