• Admiral Patrick ( ptz@dubvee.org ) 
      link
      fedilink
      English
      arrow-up
      28
      ·
      edit-2
      2 years ago

      Hey, I like a little chaos in my codebase 😆

      const funsies = () => (Math.round(Math.random() * 1000) % 2 == 0)
      if ( condition || funsies() ) {
          // do the thing
      }
      
    • bstix ( bstix@feddit.dk ) 
      link
      fedilink
      English
      arrow-up
      10
      ·
      2 years ago

      The “only” part implies exclusivity, which may be false, because other things might run the code anyway.

      IF “I can see the sun” THEN “It’s day.”

      Nothing wrong about that. However if we make it exclusive:

      IF AND ONLY IF “I can see the sun” THEN “It’s day.”

      That’s obviously wrong. I can actually not keep the day away by sitting with closed eyes in my mothers basement with the curtains shut.

      “Only if” might make sense in a legal contract, but there’s no way a piece of code can stop other pieces of code from calling the same functions.

  • raoul ( raoul@lemmy.sdf.org ) 
    link
    fedilink
    English
    arrow-up
    40
    ·
    2 years ago

    The boolean operator ‘If and only if’ do not have a relation with the program instruction ‘if’.

    The programatic ‘if’ is a jump, not a boolean operator. It do not have truth table.

    In logic:, if and iff can be seen like functions taking two booleans and returning a boolean

    • ‘if a then b’ (noted a -> b): return true if a is false or b is true. Example: ‘if I eat pizza then I fart’ This is true even if I fart all the time (if b is true, we do not care about the value of a) as long as I fart when eating pizza (if a is true, b must be also true)

    • ‘a <-> b’ is equivalent to ‘a -> b and b -> a’: the two should be true at the same time. I can only fart will eating pizza and cannot fart otherwise.

    • Hoimo ( Hoimo@ani.social ) 
      link
      fedilink
      English
      arrow-up
      5
      ·
      2 years ago

      So in programming, you’d write ‘if’ as:
      not pizza or fart where the farting is irrelevant until the pizza is involved.

      While ‘iff’ would be:
      pizza equals fart where pizza means fart and no pizza means no fart.

      I actually wrote iff as (not pizza and not fart) or (pizza and fart) before, and I’m pretty sure that’s the way I wrote an iff in production code in the past, but your comment made me realize that “they should be true at the same time” can be tested really easily with equality.