lua-users home
lua-l archive

Re: A few Wild and Wooly Proposals, while we're here (was Re: Feature request: userdata slice)

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


2015年08月21日 4:18 GMT+02:00 Sean Conner <sean@conman.org>:
> 1) Allow unique metatables for lightuserdata, that also respect __gc. This
> would allow for cheaper creation of datatypes that are managed outside of
> Lua. For my xlib interface [1] it would keep me from having to create full
> userdata that's just a pointer to a pointer.
In the parent thread, Roberto made a suggestion that can
be interpreted (and I did) as allowing per-item metatables
for all values, regardless of type, and scrapping the present
metatable pointers in the table and userdata structures.
Respecting __gc is an unreasonable demand in that case.
-1 to this one, +1 to Roberto's idea.
> 2) Allow a method to create new literals. Here me out. If we do this, and
> set up some way of writing code to understand literals, then we can pull
> strings out of the core and into an actual module. Really, the only
> difference between a string and a userdata is that there's support for
> string literals in core.
+0.5 to this one, i.e +1 for this half of it only. It can be implemented
in a less revolutionary way than suggested in the other half.
Use sharp brackets as delimiters for a string that will be
tested in order against already-defined patterns until one
matches, creating a table with a metatable which has been
associated with that pattern.
new_literal("(%d+)%-(%d+)%-(%d+)",ymd_meta)
date = <2015年08月21日>
date.year --> 2015
new_literal("(%d+)%:(%d+)%:(%d+)",time_meta)
-- you get the drift
> Let's see ... modify the parser such that when it encounters a character
> it doesn't understand, or in a context it doesn't make sense, call a
> function (supplied by the user) to pick up parsing and return some actual
> value.
Too general. The resulting code need no longer look like Lua.
It can be Brainfuck or Malebolge, whatever.

AltStyle によって変換されたページ (->オリジナル) /