Interval datatype, interval arithmetic and interval-based containers

Version on this page:2.1.2
LTS Haskell 22.29:2.1.2@rev:1
Stackage Nightly 2024-07-20:2.1.2@rev:1
Latest on Hackage:2.1.2@rev:1

See all snapshots data-interval appears in

BSD-3-Clause licensed by Masahiro Sakai ([email protected])
Maintained by [email protected]
This version can be pinned in stack with:data-interval-2.1.2@sha256:1babc74557df0b8a32d43536cc0a0cb32ff354a6d57de52f5a0e88636a16f3b0,2531


Build Status (GitHub Actions) Hackage Hackage Deps Coverage Status License

Interval datatype, interval arithmetic, and interval-based containers for Haskell.

Unlike the intervals package, this package provides both open and closed intervals and is intended to be used with Rational.



  • fix Data.IntegerInterval.width (#38, thanks to ncfavier)
  • add Data.IntegerInterval.memberCount (#44, thanks to ncfavier)
  • add instance Ord for Interval, IntervalSet and IntervalMap (#41, thanks to googleson78)
  • fix Data.IntervalSet.insert (#43)


  • fix boundary comparison in relate (#30, thanks to marcosh)
  • fix behaviour of lattices flag


  • introduce operations for Allen’s interval algebra (#18, thanks to marcosh)
  • make recip precise when 0 is not an interior point (#21)
  • add instance Storable for Interval (#25)
  • add instance Floating for Interval (#26)


  • change internal representation of Interval and IntegerInterval to reduce memory footprint (#7, thanks Bodigrim)
  • introduce Boundary type (#10, thanks Bodigrim)
  • export isSingleton function for Interval and IntegerInterval (#13)
  • remove deprecated EndPoint data type (#14, thanks Bodigrim)


  • support lattices-2.0 (Thanks to Bodigrim).
  • move definitions of Interval and IntegerInterval data types into internal modules and abstract away representations from the rest of modules (Thanks to Bodigrim).


  • add Data.IntervalSet, Data.IntervalMap.Lazy, Data.IntervalMap.Strict modules
  • add new function mapMonotonic to Data.Interval and Data.IntegerInterval
  • add new function isConnected to Data.Interval.


  • add Data.IntegerInterval
  • use extended-reals >=0.2
  • EndPoint is deprecated. Use Extended instead.


  • remove unnecessary Real constraint from comparison operators.


  • remove unnecessary Num constraint from bunch of constructors and operations: interval, (<=..<=), (<..<=), (<=..<), (<..<), whole, empty, singleton, intersection, intersections, hull, hulls. Thanks to Tad Doxsee for pointing out that.


  • use extended-reals package for representing endpoints
  • add (experimental) comparison operators that produce witnesses: (<??), (<=??), (==??), (>=??), (>??)


  • add hulls, intersections :: (Num r, Ord r) => [Interval r] -> Interval r
  • fix a bug of (<=?) operator


  • fix dependency issue with QuickCheck and test-framework-quickcheck2


  • add simplestRationalWithin :: RealFrac r => Interval r -> Maybe Rational