--- 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["procedure?"] = function (x) return types.lamtype(x) == "procedure" end types["null?"] = function (x) return x == {} end --- return types