Re: Replacing the "if" statement with an "if" expression which supersedes it
Andrey Dobrovolsky <[email protected]> Sat, 27 Jun 2026 17:36:23 +0300
| Newsgroups | gmane.comp.lang.lua.general |
|---|---|
| Message-ID | <CAN5FJ7eMmKYBLyC1VC+bUzBV=CzW1W8LgWbxjyGAaZpjUqt1jg@mail.gmail.com> |
Btw Pluto already has both ternary operator and if-expressions, https://pluto-lang.org/docs/New%20Features/Ternary%20Expressions -- Andrew сб, 27 черв. 2026 р. о 17:03 'Calimero' via lua-l <[email protected]> пише: > > Le 27/06/2026 à 15:12, Luther Thompson a écrit : > > I should point out that Lua does not allow an expression to be a statement (unless it's a function call), so letting the last statement of a block be the value of that block would be a major change in the grammar. > > > > Also, while I'd love to see a true ternary operator in Lua, it is fundamentally different from an if-else statement, and I don't think they should be unified. A ternary operator is a single expression resolving to a single value. An if-else can contain multiple statements, which makes side-effects more likely to happen. > > > > Luther > > > Hello! > > That is a good point. > Precisely due to the strange exception that routine ("function") calls are both expressions and statements, I had not noticed that and was assuming that expressions worked as statements, reinforced in that misunderstanding by the REPL's behaviour! > > Do you think this (yes, profound) change of accepting expressions as statements would be a bad one? > If so, I would agree with that, but then I would immediately draw the logical consequences and want to fix that strange exception you noted, about the callable entities declared with the keyword `function`, whose calls can be valid statements despite being (also?) expressions. > > Maybe Lua needs to acquire a `proc` or `procedure` keyword that declares works as a statement, and to make calls to `function`s invalid as statements. > Functions would only be allowed to contain an expression — no statements. > ...but *that* would be a backwards-incompatible, breaking change. And probably regarded as a very bad move. > > # (abandoning this line of thought and returning to my initial proposal's consequences) # > > At least, accepting expressions as statements would restore consistency in a backwards-compatible way. > Warning when a non-nil value was ignored could also make a lot of sense. > Thinking about backwards compatibility, this would cause new warnings in programs that called "functions" that return a value without using it. This would probably be a good thing, too: I can imagine this leading to welcome bug fixes. > > Currently, it is indeed a syntax error as you pointed out, which is different in nature. > But I think the language would be cleaner, more regular, if it systematically accepted expressions that evaluate to nil as statements. > > Cheers! > > > -- > You received this message because you are subscribed to the Google Groups "lua-l" group. > To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. > To view this discussion visit https://groups.google.com/d/msgid/lua-l/461e2afa-85fc-5d9f-5e94-ac5eefc4959e%40free.fr. -- You received this message because you are subscribed to the Google Groups "lua-l" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/lua-l/CAN5FJ7eMmKYBLyC1VC%2BbUzBV%3DCzW1W8LgWbxjyGAaZpjUqt1jg%40mail.gmail.com.