Since quasiarrays use non-classical indexing, IndexStyle should not fall back to IndexCartesian which assumes continuous integer indexing.
The index style of a quasiarray could be like IndexHybrid{IndexStyle(axes1),IndexStyle(axes2),...}. The index style of a general axes is IndexSet{typeof(union(axes))}. For example, IndexStyle(::ChebyshevU) = IndexHybrid{IndexSet{ChebyshevInterval},IndexInfLinear}.
By defining index styles, concatenation and set operations can be well defined. A concatenation over IndexInfLinear assumes interlacing. A concatenation over IndexSet assumes overlay. Adding or taking average in the intersecion is not generic as + is not defined for some types.
If one wants piecewise function, one can define IndexElementSet that allows splicing sets.
Since quasiarrays use non-classical indexing, IndexStyle should not fall back to
IndexCartesianwhich assumes continuous integer indexing.The index style of a quasiarray could be like
IndexHybrid{IndexStyle(axes1),IndexStyle(axes2),...}. The index style of a general axes isIndexSet{typeof(union(axes))}. For example,IndexStyle(::ChebyshevU) = IndexHybrid{IndexSet{ChebyshevInterval},IndexInfLinear}.By defining index styles, concatenation and set operations can be well defined. A concatenation over
IndexInfLinearassumes interlacing. A concatenation overIndexSetassumes overlay. Adding or taking average in the intersecion is not generic as+is not defined for some types.If one wants piecewise function, one can define
IndexElementSetthat allows splicing sets.