[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Propsoal: a lua dialect without nil
- From: Axel Kittenberger <axkibe@...>
- Date: Wed, 16 Feb 2011 12:12:56 +0100
>
> Here's is my personal take on this: nil *is* a first-class value because
> it can be stored in variables and tables and it can be passed to and
> returned from functions. In all these contexts, nil means "nothing": for
> instance, when you set var=nil, then var contains nothing, as you can
> check when you read var.
>
> The only restriction is that nil cannot be a table *key*, because you
> cannot put something in a "nothing" box or position. This is consistent
> with t[nil] being nil on reads because "nothing" is at nowhere.
What "first-class" exactly means is based on opinion rather than there
be a strict norm.
But nil isn't really first-class, because it cannot really be stored
as value into tables. "storing" it in a table makes the key go away an
not show up on i/pairs, nor can you differ if a table key "stores" a
nil, or is not present.
First class nils would be able to returned by iterators that not mark
the end of iterator.
If that all would be possible, then I'd call it a first-class nil.