One thing missing from all implementations AFAIK appears to be sets, with union, intersection etc operators.
In an earlier life I found Pascal (the best pre-open source revolution version was by Prospero) which taught me, as a then-Fortran user, the usefulness of understanding data structures as well as algorithms (praise to Knuth).
I regularly used set operations which were conveniently implemented as unlimited (effectively) membership at bit level so very efficient. In Lua the only way to do this would be to use associative tables which is very wasteful of space and efficiency.
There is the bit library (included in luajit) but that is rather low level - and (I assume) limits size or requires the set to be defined as a string which may make adding members messy and the library is aimed at twiddling bits rather than the more simple membership so includes shift, rotation etc which are not pertinent to sets.
In an earlier life I found Pascal (the best pre-open source revolution version was by Prospero) which taught me, as a then-Fortran user, the usefulness of understanding data structures as well as algorithms (praise to Knuth).
I regularly used set operations which were conveniently implemented as unlimited (effectively) membership at bit level so very efficient. In Lua the only way to do this would be to use associative tables which is very wasteful of space and efficiency.
There is the bit library (included in luajit) but that is rather low level - and (I assume) limits size or requires the set to be defined as a string which may make adding members messy and the library is aimed at twiddling bits rather than the more simple membership so includes shift, rotation etc which are not pertinent to sets.