lua-users home
lua-l archive

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



On 22-Jul-04, at 9:31 PM, Gabor Grothendieck wrote:

For example, we can invoke the anonymous factorial function evaluating it for the argument 3 like this:

   Recall = function(...)
     return debug.getinfo(2,"f").func(unpack(arg))
   end

The use of the debug library is not advisable, unless you are actually debugging. Furthermore, this will not work on the tail-recursive implementation of factorial:


print ((function(x, acc)
          if x <= 1 then return acc
                    else return Recall(x - 1, x * acc)
          end
        end) (3, 1))

stdin:1: attempt to call field `func' (a nil value)
stack traceback:
        stdin:1: in function `Recall'
        (tail call): ?
        stdin:5: in main chunk
        [C]: ?


---------- Just to confirm: do local function fact(x, acc) if x <= 1 then return acc else return fact(x - 1, x * acc) end end for i = 1, 10 do print(fact(i, 1)) end end ==> 1 2 6 24 120 720 5040 40320 362880 3628800