News for hackers. Stuff that matters.
Re:Mojo: It’s Finally Here by IshKebab on Thursday September 07, 2023 @02:54PM (#37423825)
Yeah it was pretty good in the Python 2 era but definitely not something to copy now.

Another big issue is that it's not expression based. For example you can't do `foo = (yield a).b` you have to do `x = yield a; foo = x.b`.

Having a special syntax for the expression version of if else is another example as you said.

I was disappointed to discover Dart made the same mistake there. There's a totally different syntax for match statements and match expressions. Why?? Ok maybe backwards compatibility.. but still. They fixed nullability properly and it wasn't too bad.

Re:Mojo: It’s Finally Here by ptx on Thursday September 07, 2023 @03:39PM (#37424485)
> For example you can't do `foo = (yield a).b` you have to do `x = yield a; foo = x.b`.

The first snippet actually works fine – yield expressions were introduced with PEP 342 in Python 2.5.

Re:Mojo: It’s Finally Here by IshKebab on Friday September 08, 2023 @07:35AM (#37432222)
Ah I misremembered. I was actually trying to do this

    x = [yield a for a in b]
Which yields (heh) an `Invalid Syntax` error. Thanks for the link to that PEP though - turns out the answer is that you almost always have to parenthesise it.

    x = [(yield a) for a in b]
> SyntaxError: yield inside list comprehension

Ok my original point stands.

Re:Mojo: It’s Finally Here by bafe on Thursday September 07, 2023 @04:24PM (#37425051)
The fact python is statement-heavy to me shows that it was originally conceived in another age. It is really annoying after you use expression oriented languages