local function map(list, func) local new_list = {} for key, value in pairs(list) do new_list[key] = func(key, value) end return new_list end local function join(list) local string = "" for key, value in pairs(list) do string = string .. value end return string end local function basic_element(name) return function(params, children) return "<"..name ..join(map(params, function(key, value) return " "..key.."='"..value.."'" end)) ..">" ..join(children) .."" end end local function a(params, children) if not params.href then print("WARNING: Link `"..join(children).."` doesn't have a href.") end return basic_element("a")(params, children) end print(a({ href = "https://nulo.in" }, {"Hola, soy html.lua"}))