Neato

  • FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    1 month 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
      fedilink
      arrow-up
      1
      ·
      1 month 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
        arrow-up
        2
        ·
        1 month 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
          fedilink
          arrow-up
          2
          ·
          1 month ago

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