function t.union(...)local l={...}assert(callbackArray(l))return function(y)for l,S in ipairs(l)do if S(y)then return true end end return false end end
--[[**
		creates a union type

		@param ... The checks to union

		@returns A function that will return true iff the condition is passed
	**--]]
function t.union(...)
	local checks = { ... }
	assert(callbackArray(checks))

	return function(value)
		for _, check in ipairs(checks) do
			if check(value) then
				return true
			end
		end

		return false
	end
end
