Ah I see, this would indeed require a slightly new function which does not forget the endpoint intervals.

Exactly! `IntervalOptimisation.minimise`

does already much more than solving this problem would require, but there is an interface-level issue that makes it unsolvable, and the issue arises precisely from using `a..b`

instead of `(a, b)`

to specify a domain.

Iām not saying this to point out a flaw (`IntervalOptimisation`

does what it promises, and I find it a great piece of work), but I am using it as an example in this discussion about different ways to use intervals and building a unified interface.

Yes, intervals are generally useful concepts, but that does not mean that a single one generalizes well in Julia. They come in many forms, and what one would encode in the type (for type stable dispatch) matters on the application.

Eg for a plotting library, a pair of finite numbers suffices. But for a constrained optimization package, which end is open/closed can matter. For a package that maps intervals to some other interval, whether the interval is finite is important.

For these reasons, there are lot of implementations, and I am not sure a single one will emerge as the best solution.

Also, I would only wrap things in a `struct`

if I want to treat it as a single unit (eg for the purposes of arithmetic or transformations). Specifically for plotting, this is not a common use case, and frequently you even want to specify just the lower- or upper limit and leave the other one to be determined by the data.