[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
**Subject**: **Lua 5.2 sequence definition - clarification needed**
**From**: Lorenzo Donati <lorenzodonatibz@...>
**Date**: Wed, 29 Jun 2011 09:25:23 +0200

Hi all!
* 1st point
Section 3.4.6 of Lua 5.2 refman says:

`"Unless a __len metamethod is given, the length of a table t is only
``defined if the table is a sequence, that is, the set of its positive
``numeric keys is equal to {1..n} for some integer n."
`
and later:

`"Note, however, that non-numeric keys do not interfere with whether a
``table is a sequence."
`

`From the first sentence I get that also non-positive numeric keys don't
``interfere with the table being a sequence (right?). Wouldn't it be worth
``adding this note to the second sentence? I.e.:
`

`"Note, however, that non-numeric keys *or non-positive numeric keys* do
``not interfere with whether a table is a sequence."
`
* 2nd point
This is maybe nitpicking, but anyway:

`as someone else already pointed out in an old thread (IIRC), the first
``cited sentence above assumes that an empty sequence is a table that has
``no positive numeric keys. In this case the above definition would hold
``with the set being {1..0}, i.e. the empty set. But the empty set could
``also be represented as {1..-1}, or {1..-4} with that notation. Therefore
``someone could infer that for empty sequences the length could be either
``0, -1 or -4.
`
Therefore I would modify slightly the definition:

`"Unless a __len metamethod is given, the length of a table t is only
``defined if the table is a sequence, that is, the set of its positive
``numeric keys is equal to {1..n} for some *non-negative* integer n."
`

`This would rule out that (admittedly unintuitive, but correct)
``misinterpretation.
`
Cheers.
-- Lorenzo