Closures

A counter.

A function that remembers n.

Goal

Print 1 then 2 from a counter.

local function counter()
  local n = 0
  return function()
    n = n + 1
    return n
  end
end
local next = counter()
print(next())
print(next())
local function greeter(city)
  return function()
    return "Kiosk in " .. city
  end
end
print(greeter("Eldoret")())
local function add(n)
  return function(x) return x + n end
end
print(add(40)(12))
local n = 5
local function show()
  print(n)
end
show()