About

Metadata

  • Last updated , by robrix
  • License BSD-3-Clause
  • Maintained by: rob.rix@me.com

  • Lottery factor: 1

Links

Installation

Tested Compilers

  1. 9.10.1
  2. 9.8.2
  3. 9.6.2
  4. 9.4.2
  5. 9.2.1
  6. 9.0.1
  7. 8.10.1
  8. 8.8.3
  9. 8.6.5
  10. 8.4.4
  11. 8.2.2

Readme

interval-functor

Hackage BSD3 license Build Status

This is a Haskell package defining an Interval datatype parameterized by the type of endpoints and the type of their coordinates. For example, it can represent a simple one-dimensional range:

import Data.Functor.Identity
import Data.Functor.Interval

zeroInterval :: Num a => Interval Identity a
zeroInterval = point 0

or a multi-dimensional region:

import Data.Functor.Interval
import Linear.V3 -- from the linear package

unitCube :: Num a => Interval V3 a
unitCube = (-1)...1

Development

Development currently assumes a Mac with ghc 8.10 & cabal 3.0. You can install them directly, or use ghcup. It should be possible to develop on other platforms and compilers, but I probably haven’t tried them myself.

cabal build --enable-tests # initial build
cabal repl # load the library and tests in ghci

Once the repl has loaded, you can run the tests with :main.

λ :main

Configuration exists for haskell-ide-engine, which can be integrated into many editors.

Advantages

interval-functor separates the representation of the coordinates of an interval from the representation of the space the coordinates occur in. This makes it particularly suitable for consistent treatment of multi-dimensional intervals; operations like e.g. union extend naturally to multi-dimensional spaces.

It is also thoroughly property tested and documented.