lua-users home
lua-l archive

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


One problem with having module auto-populate the global namespace is that it
encourages the creation of inefficient and fragile Lua code.

The efficient path:

    local foo = require "foo"

    for k = 1, 10 do
        foo.bar( k )
    end

The inefficient path:

    require "foo"

    for k = 1, 10 do
        foo.bar( k )
    end

The fragile path:

    -- Fortunately, someone else seems to have always required foo.

    for k = 1, 10 do
        foo.bar( k )
    end

And, to end on a positive note, the really efficient path:

    local foo = require "foo"

    local bar = foo.bar

    for k = 1, 10 do
        bar( k )
    end

I don't have a good answer for how to encourage people to use the last form,
but it's a simple change to module to get them to use the first form. If
we're going to worry about Lua efficiency and how well it does on shootouts,
it might be a good idea to try to promote the writing of efficient Lua code.

Mark