Neato

  • @nxdefiant
    link
    222 days ago

    “a = x if foo else y” is a perfectly cromulent statement!

    • @FizzyOrange@programming.dev
      link
      fedilink
      221 days ago

      It’s not. In functional languages there’s no special case like this. All if-elses are expressions. It’s far superior. For example how do you do this with Python’s if-else expression?

      let x = if foo {
        let y = bar();
        baz();
        y
      } else {
        z
      }
      
      • @nxdefiant
        link
        121 days ago

        x = foo(y:=bar(), baz(), y) or z should work assuming foo bar and baz are functions being called?

        if this is setting y to the effect of bar() + running baz after, then:

        x = [bar(), baz()][0] or z

        might work

        and if you need y to be defined for later use:

        x = [(y:=bar()), baz()][0] or z

        but thats from memory, not sure if that will even run as written.

        if I get to a real computer I'll try that with an actual if statement instead of a bastardized ternary.
        • @FizzyOrange@programming.dev
          link
          fedilink
          221 days ago

          foo isn’t a function, it’s a bool. But in any case, as you can see the answer is “with terrible hacks”. Python is not a functional language. It is imperative.

          • @nxdefiant
            link
            221 days ago

            Yeah, never said it was, just that if you really want to emulate that style you mostly can.