For MeasureTheory.jl, we need a nice way to represent some domains, like

- continuous sets
`ℝ`

,`ℝ₊`

, and`𝕀`

(unit interval) - Infinite discrete sets
`ℤ`

,`ℤ₊`

,`ℤ₀₊`

- Also finite sets
`a:b`

, but that’s easier

Eventually we’ll need to be able to represent measures on manifolds, either as in Manifolds.jl or as in Bijectors.jl or TransformVariables.jl. That’s further down the line, but I want to be sure to set things up in a way that doesn’t lead to headaches going forward.

To be a little more specific, we define most measures in terms of a density over some *base measure*. The most common of these is `Lebesgue(X)`

for some `X`

.

We’ve been using `Lebesgue(Real)`

for a while, but…

- The type hierarchy approach is kind of rigid, for example getting in the way of things like symbolic evaluation
- There’s not a clean way to have subsets like
`ℝ₊`

and`𝕀`

.

We could build `ℝ`

, `ℝ₊`

, and `𝕀`

as part of MeasureTheory, but I want to be sure we can play nice with other packages, especially `Manifolds.jl`

and the `JuliaApproximation`

ecosystem.

What’s a good approach to keep consistency with these packages?