lua-users home
lua-l archive

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


On 19 March 2018 at 17:51, Dirk Laurie <dirk.laurie@gmail.com> wrote:
> Lua 5.4 should have a constant of type nil called 'null' [1]. Not a
> new keyword, only a new predefined value.
>
> All the functionality aimed for with nil-in-tables can be achieved this way.
>
> - Being of type nil, 'null' by itself tests false.
> - Not being equal to nil, 'nil' is a non-hole.
> - Can be preassigned to global values (or a value in any table) so
> that __index can just signal an error.
>

Hi, I agree partly with your idea. Maybe Lua can have a well defined
singleton object call MISSING or NONE or UNDEFINED. Say it is a global
value which is actually just a Userdata.

Nil should remain as is; and semantics for Nil should remain as is.

Anyone wanting to put values that do not exist will simply set this to
MISSING (If that is the global name).

MISSING will evaluate to True not false as it is just another value,
albeit a special one.
MISSING will only be equal to another reference to MISSING and nothing else.

In statistics you often have missing values. This is hard to model in
Lua tables currently but above approach would work.

Unlike others I personally do not think a break in backwards
compatibility is at all desirable even for Lua 6.0. Introducing a
subtype of Nil or Nil in tables has the problem that all existing Lua
code relies upon the invariant that Nils do not appear when iterating.

Regards
Dibyendu