Neato

  • FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    6 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
        ·
        6 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
          ·
          6 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
            ·
            6 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.