lua-users home
lua-l archive

[ANN] LuaMacro on LuaForge

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


Hi guys,
A semi-official release:
http://luaforge.net/projects/luamacro/
The macro du jour is list comprehensions, using a syntax suggested by
Fabien and implemented with his MetaLua:
 x = L{i for i = 1,5}
 {1,2,3,4,5}
Such a statement does not actually require much transformation to be
valid Lua, if you use anonymous functions:
 x = (function() local ls={}; for i = 1,5 do ls[#ls+1] = i; return ls end)()
It's possible to nest these 'list constructors' (I personally don't
like the term 'list comprehension')
x = L{L{j for j=1,3} for i=1,3}
 {{1,2,3},{1,2,3},{1,2,3}}
There is also an implementation of the match/with statement as
discussed some time back.
Note: there is a limitation of macros; they cannot load modules,
except with a nasty fiddle:
For example, a simple macro which has the side-effect of trying to
load a module. If one switches off the token filter by setting FILTER
to nil, it seems to work.
macro.define('X',nil,function(ls)
 local F = FILTER
 FILTER = nil
 require 'simple'
 FILTER = f
 return {}
end)
Thanks to Sérgio Medeiros for unearthing this bug.
steve d.

AltStyle によって変換されたページ (->オリジナル) /