--- lam.types local types = {} types.luatype = type function types.lamtype (x) if types.luatype(x) == "string" then return "Symbol" elseif types.luatype(x) == "number" then return "Number" elseif getmetatable(x) and getmetatable(x).__type then return getmetatable(x).__type elseif types.luatype(x) == "table" then return "List" else return types.luatype(x) end end types["number?"] = function (x) return types.lamtype(x) == "Number" end types["symbol?"] = function (x) return types.lamtype(x) == "Symbol" end types["list?"] = function (x) return types.lamtype(x) == "List" end types["null?"] = function (x) return x == {} end --- return types