2 ms·
I don't think that it's really subpar. It's just unusual compared to others. In and of itself it's very consistent. For instance there's `|capture|` for capturi
by pzittlau 1mo ago
I don't think that it's really subpar. It's just unusual compared to others. In and of itself it's very consistent. For instance there's `|capture|` for capturing all sort of things(errors, optionals, ...) in nearly all control flow constructs. `blk:` for naming blocks, `if`s, `switch`, and so on.
Have a look at this blog post:
https://matklad.github.io/2025/08/09/zigs-lovely-syntax.html https://matklad.github.io/2025/08/09/zigs-lovely-syntax.html
- phplovesong 1mo agoI saw that article previously. Nearly all of the syntax seem to be in-house with little benefit. All the examples could just use some modern c-like thing. Zig has benefits, like comptime, no hidden control flow, memory mngmt, cross compilation etc. But its syntax is just a mouthfull of wats, whys and wtfs. I can forsee a compile to Zig languge popping up sometime soon.
- ulbu 1mo ago|capture| hides an inconsistency that bugs me – everywhere else, assignment to a variable flows leftwards. |capture| is an unnatural rightwards assignment. in general, I like zig syntax, but i find that it had very little regard to how the eye moves on the page. it’s jarring at times.
- simjnd 1mo agoBut the capture is conditional so it makes sense. if (evaluation) result = evaluation if (evaluation) |result| Although assignments as expressions in C are convenient, I don't think they make a ton of sense and find Zig's capture easier to read (easier to immediately see what's being evaluated)
- ulbu 1mo agoif |result| (evaluation)
- simjnd 1mo agoI think you could argue for it both ways. Then you could claim ternaries are inconsistent too, shouldn't it be: resultA : resultB ? (evaluation) if we always put result first? I think the most important piece of if statements and ternaries is the condition being evaluated and it's worth putting that first?
- ulbu 1mo agobut zig has no ternaries, so it does not apply to a discussion about zig’s syntax. and ternary is a branch with no variable introduction, so it doesn’t apply again. (it’s basically a weak switch expression, and the value moves leftwards towards its invocation.)