lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




On 26/08/15 08:53 PM, Hisham wrote:
On 26 August 2015 at 16:27, Soni L. <fakedme@gmail.com> wrote:

On 26/08/15 04:24 PM, Dirk Laurie wrote:
2015-08-24 18:07 GMT+02:00 steve donovan <steve.j.donovan@gmail.com>:
On Fri, Aug 21, 2015 at 4:04 PM, Coda Highland <chighland@gmail.com>
wrote:
I think C++11's way of defining new literals is pretty reasonable. You
define a suffix operator (which must start with _) and when literals
appear with that suffix, it's translated at compile time (in Lua's
case, bytecode generation time) to a call to that function
But (and this is crucial) any resulting object creation is not hoisted
out. For instance, in languages with regexp literals /.../, the
literal is replaced with a reference to a compiled regexp object.
They effectively become constants.  If I see a 'date literal' like
D'2015-08-24' in Lua I know that this string will be parsed _each
time_ - it isn't really a literal.

Code generation for true custom literals would get pretty involved.  I
don't think the prettiness is worth the bother.
Not at all, assuming that Roberto's suggestion of per-value
metatables gets implemented. A user-defined literal would
be implemented as a string with a metatable. It could work
this way:
I'd rather have multiple levels of metatables.

Value level
Scope level
Function level
Module level
Global level

Including for tables so that you can t = {} t:insert(v) and it just works.
...until you do something like

    users[name] = data

where name happens to be "insert"...

-- Hisham

Don't you have that caveat with the current metatable system, anyway?

--
Disclaimer: these emails are public and can be accessed from <TODO: get a non-DHCP IP and put it here>. If you do not agree with this, DO NOT REPLY.