diff --git a/difference.go b/difference.go index 69be237..3bf0b15 100644 --- a/difference.go +++ b/difference.go @@ -62,17 +62,17 @@ func difference[E Elem[E]](x, y, out Set[E]) Set[E] { switch lo := x[0].Low; lo.Compare(r.Low) { case -1: if !inv { - z = append(z, Interval[E]{lo, r.Low}) + z = append(z, Range(lo, r.Low)) } case +1: if inv { - z = append(z, Interval[E]{r.Low, lo}) + z = append(z, Range(r.Low, lo)) } } if inv { for i := 0; i < j-1; i++ { - z = append(z, Interval[E]{x[i].High, x[i+1].Low}) + z = append(z, Range(x[i].High, x[i+1].Low)) } } @@ -82,7 +82,7 @@ func difference[E Elem[E]](x, y, out Set[E]) Set[E] { switch hi.Compare(r.High) { case -1: if inv { - z = append(z, Interval[E]{hi, r.High}) + z = append(z, Range(hi, r.High)) } case +1: r.Low, r.High = r.High, hi diff --git a/intervalset.go b/intervalset.go index 9a3dfdd..18c4625 100644 --- a/intervalset.go +++ b/intervalset.go @@ -29,7 +29,7 @@ type Interval[E Elem[E]] struct { // // If v is the maximum value of E, One returns an invalid Interval. func One[E Enum[E]](v E) Interval[E] { - return Interval[E]{v, v.Next()} + return Range(v, v.Next()) } // Range returns an Interval of range [lo, hi). @@ -290,8 +290,5 @@ func (x Set[E]) Extent() Interval[E] { return Interval[E]{} } - return Interval[E]{ - Low: x[0].Low, - High: x[len(x)-1].High, - } + return Range(x[0].Low, x[len(x)-1].High) } diff --git a/intervalset_test.go b/intervalset_test.go index 72d051f..a2f9bc9 100644 --- a/intervalset_test.go +++ b/intervalset_test.go @@ -204,7 +204,7 @@ func TestExtent(t *testing.T) { }{ { Set[E]{{1, 3}, {5, 7}}.Extent(), - Interval[E]{1, 7}, + Range[E](1, 7), }, { Set[E]{}.Extent(), diff --git a/symdiff.go b/symdiff.go index 8bfffd6..89ecc4e 100644 --- a/symdiff.go +++ b/symdiff.go @@ -48,13 +48,13 @@ func symmetricDifference[E Elem[E]](x, y, out Set[E]) Set[E] { switch lo := x[0].Low; lo.Compare(r.Low) { case -1: - z = appendInterval(z, Interval[E]{lo, r.Low}) + z = appendInterval(z, Range(lo, r.Low)) case +1: - z = appendInterval(z, Interval[E]{r.Low, lo}) + z = appendInterval(z, Range(r.Low, lo)) } for i := 0; i < j-1; i++ { - z = append(z, Interval[E]{x[i].High, x[i+1].Low}) + z = append(z, Range(x[i].High, x[i+1].Low)) } hi := x[j-1].High @@ -62,7 +62,7 @@ func symmetricDifference[E Elem[E]](x, y, out Set[E]) Set[E] { switch hi.Compare(r.High) { case -1: - z = append(z, Interval[E]{hi, r.High}) + z = append(z, Range(hi, r.High)) case +1: r.Low, r.High = r.High, hi x, y = y, x