JuliaMath / JuliaMath/IntervalSets.jl

Merging with Intervals.jl?

Open
#67 12 comments 3 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
109
Forks
29
PR merge metrics
No merged PRs in 30d

Description

Both Intervals.jl and IntervalSets.jl define a very similar basic API (e.g., `AbstractInterval`, inclusivity, set operations). It'd be nice if that basic API could live in one package while many domain specific operations (e.g., math, statistics, time, plotting) lived in others. I like the shorter names in Intervals.jl, but I don't have a strong opinion about where that hierarchy lives. I'd mostly be interested if folks have a view of where the boundary should sit. The merging plan that first comes to mind looks a little like this:

1. Extend the Intervals.jl hierarchy to match IntervalSets.jl (defining and subtyping `Domain`)
2. Strip most of the functionality from Intervals.jl into separate packages (e.g., `AnchoredIntervals.jl`, `IntervalPlots.jl`, `TimeIntervals.jl`)
3. Ensure that all existing Intervals.jl set related operations and syntax are covered by IntervalSets.jl (e.g., `..`, `intersect`, `union`)
4. Update IntervalSets.jl to extend the minimal hierarchy in Intervals.jl, but providing the current set operations.

NOTE: This plan requires more work on the Intervals.jl side, and we wouldn't propose touching IntervalSets.jl till the end, but it'd be good to know if step 4 would be reasonable before working on the other components. Feel free to post alternate plans if you disagree.

In the end, IntervalSets.jl would have one extra dependency on the reduced Intervals.jl package and there might need to be some deprecations/backward compatibility where things don't fully align. The benefit to IntervalSets.jl is that features in Intervals.jl would become PnP and the benefit to Intervals.jl is that we'd get to share the same user- and code-base for feedback and development.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.