interval-functor: Intervals of functors.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Closed intervals in spaces described by a functor.


[Skip to Readme]

Properties

Versions 0.0.0.0, 0.0.0.0, 0.0.0.1
Change log CHANGELOG.md
Dependencies base (>=4.10 && <5), transformers (>=0.5.6.2 && <0.6) [details]
License BSD-3-Clause
Copyright 2018-2020 Rob Rix
Author Rob Rix
Maintainer rob.rix@me.com
Category Data
Home page https://github.com/robrix/interval-functor
Bug tracker https://github.com/robrix/interval-functor/issues
Source repo head: git clone https://github.com/robrix/interval-functor
Uploaded by robrix at 2020-07-11T22:41:34Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for interval-functor-0.0.0.0

[back to package description]

interval-functor

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
script/repl # load the library and tests in ghci

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

λ :main

Configuration exists for ghcide, 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.