• Asetru@feddit.org
    link
    fedilink
    arrow-up
    22
    ·
    7 days ago

    The or() combinator means exactly one succeeds.

    Using “or” to define a function that does “xor”… Did that guy never hear about formal logic? That’s, like, first or second semester stuff…

    Here’s the thing: I don’t have a CS degree.

    sigh

    • Glitchvid@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      6 days ago

      It’s an understandable interpretation for the lexical use of or which can imply exclusive disjunction.

      In Rust the result type has the method .or() which returns either Ok(A) or Ok(B) (but not both), and I don’t see clambering to change it to xor, because the exclusive nature is implicit both linguistically and in the type state.

      • Asetru@feddit.org
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        5 days ago

        The result type in rust does not return a true/false but a type. More importantly though, it doesn’t return err if both values are set but simply returns the first value:

        So… It’s not only not mapping your input to truth values, it also behaves more like I’d expect an “or” to behave, which is not “xor” or, if there’s more than two inputs, “exactly one”, but succeeding if any input is set.

        • Glitchvid@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          4 days ago

          …Which is basically how the OP’s or function also works, it takes several Option<T>s and returns the first valid one (and only that one), it doesn’t operate on boolean logic types — it’s a valid lexical use of or.

          • Asetru@feddit.org
            link
            fedilink
            arrow-up
            1
            ·
            4 days ago

            Absolutely not.

            Mutually exclusive options

            Another classic. Pick one output format: JSON, YAML, or XML. But definitely not two.

            Emphasis mine.

            It takes the input and fails if there is more than one valid one, which decidedly isn’t what’s an “or” in comp sci.