Neato

    • FizzyOrange@programming.dev
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      7 months ago

      You’re still limited by lambda expressions though. And in general the language is still statement based, not expression based. You can’t do a = if foo then x else y type things (except for the one-off and backwards x if foo else y; they were so close!).

        • FizzyOrange@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          7 months 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@startrek.website
            link
            fedilink
            arrow-up
            2
            ·
            7 months 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
              ·
              7 months 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.