I will be giving an introduction to the Lua scripting language. It is technically more a procedural language but has good support for functional and declarative paradigms.
Lua's niche is the fact that it is well suited to extend systems built using other languages and that it can run practically anywhere from embedded devices to super computers.
Lua's philosophy is to be minimalist and as such it does not come with batteries included. Depending on where an how you are using Lua you are expected to include community libraries as needed. There are two popular module/package management systems available for Lua, LuaRocks (http://luarocks.org/) and LuaDist (http://luadist.org/). On Windows there is a batteries included distribution LuaForWindows (https://code.google.com/p/luaforwindows/) and for other platforms see the Lua Batteries LuaDist distribution (https://github.com/LuaDist/batteries).
Besides having a look at Lua's built in dynamic meta programming support I will also look at Metalua which adds static meta programming to Lua.