[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: [ANN] Lua 5.4.0 (alpha) now available
- From: Lorenzo Donati <lorenzodonatibz@...>
- Date: Thu, 20 Jun 2019 10:21:20 +0200
On 20/06/2019 07:39, Egor Skriptunoff wrote:
On Fri, Jun 14, 2019 at 11:22 PM Viacheslav Usov wrote:
This is probably bikeshedding, but:
local (x scoped), (y const), (z const alias) = a, b, c
This is a nice bikeshedding!
From aesthetic point of view, it looks more pleasant than other possible
syntax such as <const>, @const and :const
Definitely!
As far as bikeshedding goes :-) I was one of the proponent of the @const
syntax because interfered less with my "internal parser" (angle brackets
are either too C++ or they may be confused with relops, especially with
long list of attributes).
This new suggestion is both elegant and readable. "()" means "grouping"
anyway in Lua, so no confusion. The "(var_name att_list)" allows both
multiple var declarations in a single local statement and also multiple
attribute /with no comma inbetween/ (which could confuse reader in long
statements with both multiple vars AND multiple attributes.
This might also elegantly allow parametrized attributes (e.g. for
optional type checking)
Contrived example with hard wrapping (and funny attributes):
local (x const helpful alias ),
(y const alias integer(32) ),
(z const final float(64) ),
(errmsg const string(256) whatever )
= mytable, 345, 23.4, myfunc(a,b,c)
Still quite readable!
I think I love it! :-)
I hope this doesn't open the door to some nasty ambiguity (I can't say,
I'm no big grammar expert) so that Lua team may possibly consider its
adoption!
The only problem I see is that it can't be applied so easily to global
variables or table fields, if ever this was a long term goal.
Hooray for Viacheslav! :-)
Cheers!
-- Lorenzo