function Option.AndThen(A,V)if A:IsSome()then local T=V(A:Unwrap())Option.Assert(T)return T else return Option.None end end

function Option:AndThen(andThenFn)
	if self:IsSome() then
		local result = andThenFn(self:Unwrap())
		Option.Assert(result)
		return result
	else
		return Option.None
	end
end
