greener_grass 3 days ago

How is it writing React without multi-line lambdas?

They are everywhere in JavaScript and I couldn't imagine my day-to-day without them!

  • vishnudeva 3 days ago

    I think my answer: I have no idea what multi-line lambdas are, probably explains why I find Reflex (or Rio/Streamlit, etc) amazing, haha

    For a person with zero front-end knowledge, it's a game changer.

    • greener_grass 3 days ago

      In JavaScript you can do this:

          const f = (x, y) => {
            const z = x + y;
            const w = z * 2;
            return z - w + x;
          };
      
      In Python, you cannot do this:

          f = (
            lambda x, y:
              z = x + y;
              w = z * 2;
              return z - w + x;
          )
      
      Instead, you need to pull it out into a def:

          def f(x, y):
            z = x + y;
            w = z * 2;
            return z - w + x;
      
      Sometimes, this is no big deal. But other times, it's damn annoying; the language forces you to lay out your code in a less intuitive way for no obvious benefit.
      • skeledrew 3 days ago

        Actually you can. If you really want a multi-line lambda with your example...

        ```f = lambda x, y: [ z := x + y, w := z 2, z - w + x, ][-1]```

        * That version does look strange, as it uses a list in order to get that last calculation. But I often use lambdas to check results in parametrized tests, and they naturally spread to multiple lines without the list hack since they're chains of comparisons.

  • Retr0id 3 days ago

    Rio components are classes, so you could create a named class method and reference it. Obviously not the same thing as multi-line lambdas but it'd be the pythonic approach imho.

  • mixmastamyk 3 days ago

    Either name them, or squeeze multiple expressions into a tuple. More can be done, now with walrus.

  • wiseowise 3 days ago

    > They are everywhere in any proper programming language

    FTFY.