eliminators

Dependently typed elimination functions using singletons

https://github.com/RyanGlScott/eliminators

Version on this page:0.8
LTS Haskell 22.14:0.9.3@rev:2
Stackage Nightly 2024-03-28:0.9.4@rev:1
Latest on Hackage:0.9.4@rev:1

See all snapshots eliminators appears in

BSD-3-Clause licensed by Ryan Scott
Maintained by Ryan Scott
This version can be pinned in stack with:eliminators-0.8@sha256:5a4e5b4a6b8edd1ddf9e1ac8abd7170d88aeeb7b2e24f535d0e7dcd8c0968fc8,2652

Module documentation for 0.8

eliminators

Hackage Hackage Dependencies Haskell Programming Language BSD3 License Build Status

This library provides eliminators for inductive data types, leveraging the power of the singletons library to allow dependently typed elimination.

Changes

0.8 [2021.03.12]

  • Require singletons-base-3.0 and GHC 9.0.
  • Remove eliminators for Data.Semigroup.Option, which is deprecated as of base-4.15.0.0.

0.7 [2020.03.25]

  • Require singletons-2.7 and GHC 8.10.
  • Add experimental support for generating type-level eliminators through the deriveTypeElim and deriveTypeElimNamed functions.
  • Add eliminators for All, Any, Arg, Const, Down, Dual, First, Identity, Last, Max, Min, Option, Product, Sum, and WrappedMonoid.

0.6 [2019.08.27]

  • Require singletons-2.6 and GHC 8.8.

0.5.1 [2019.04.26]

  • Support th-abstraction-0.3.0.0 or later.

0.5 [2018.09.18]

  • Require singletons-2.5 and GHC 8.6.

0.4.1 [2018.02.13]

  • Add elimVoid to Data.Eliminator.

0.4 [2018.01.09]

  • Require singletons-2.4 and GHC 8.4.

0.3 [2017-11-07]

  • Migrate the old elimNat from Data.Eliminator (which worked over the Nat from GHC.TypeNats) to Data.Eliminator.TypeNats. There elimNat that now lives in Data.Eliminator is for an unrelated Nat data type from the singleton-nats package (which is a proper, inductively defined, Peano natural number type).

0.2 [2017-07-22]

  • Introduce the Data.Eliminator.TH module, which provides functionality for generating eliminator functions using Template Haskell. Currently, only simple algebraic data types that do not use polymorphic recursion are supported.
  • All eliminators now use predicates with (~>).

0.1 [2017-07-02]

  • Initial release.