下村一系 |
|
Lua 中的函数式编程,迭代器,生成器,组合器。以及通过协程实现的惰性求值。
Lua 的 VM 和字节码。例如,作为 bind2 的实现,在函数代码(可能是字节码和常量字段)中注入绑定值,而不是通过包装的匿名函数更改参数顺序。
-- Lua sais: attempt to call global `fact' (a nil value) local fact = function(num) if (num > 1) return n*fact(num-1) else return 1 end end
-- this is ok. calls global 'fact' fact = function(num) if (num > 1) return n*fact(num-1) else return 1 end end
-- but since the closure depend to global, see code below temp = fact fact = function (num) return num end print(temp(10)) -- temp(10) returns 90
-- the 'a' in table is nil. local a = { a } -- what the function f returns ? ... local f = function() return f end