linear-generics: Generic programming library for generalised deriving.
This package offers a version of GHC.Generics with two important improvements:
The
to,from,to1, andfrom1methods have multiplicity-polymorphic types, allowing them to be used with either traditional Haskell code or linearly typed code.The representations used for
Generic1are modified slightly. As a result,to1andfrom1never need to usefmap. This can greatly improve performance, and it is necessary to support multiplicity polymorphism. A smaller change, approximately as proposed by spl, reduces the number of instances that must be written to actually useGeneric1for deriving instances of other classes.
For more details, see the Generics.Linear documentation.
This library is organized as follows:
Generics.Linear defines the core functionality for generics, including the multiplicity-polymorphic
Generic(1)classes and a replacement for the:.:composition type.Generics.Linear.TH implements Template Haskell functionality for deriving instances of
Generic(1).Generics.Linear.Unsafe.ViaGHCGenerics offers
DerivingViatargets to deriveGenericandGeneric1instances fromGHC.Generics.. Because these instances necessarily use unsafe coercions, their use will likely inhibit full optimization of code using them.GHC.Generics.Generic
Educational code: the educational modules exported by
generic-deriving
have been copied into the tests/Generic/Deriving directory
in this repository, with the very few modifications required to
accommodate the differences between the Generic1 representations
here and in base. All the same caveats apply as in the originals;
see that package's README.
[Skip to Readme]
Modules
[Index] [Quick Jump]
- Generics
- Generics.Linear
- Generics.Linear.TH
- Generics.Linear.TH.Insertions
- Unsafe
- Generics.Linear.TH
- Generics.Linear
Downloads
- linear-generics-0.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.2, 0.2.1, 0.2.2, 0.2.3 (info) |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.15 && <5), containers (>=0.5.9 && <0.7), ghc-prim (<1), template-haskell (>=2.16 && <2.19), th-abstraction (>=0.4 && <0.5) [details] |
| Tested with | ghc ==9.0.1, ghc ==9.2.1 |
| License | BSD-3-Clause |
| Copyright | 2011-2013 Universiteit Utrecht, University of Oxford, Ryan Scott, 2021 David Feuer |
| Author | José Pedro Magalhães |
| Maintainer | David.Feuer@gmail.com |
| Uploaded | by dfeuer at 2021-11-05T19:42:23Z |
| Category | Generics |
| Home page | https://github.com/linear-generics/linear-generics |
| Bug tracker | https://github.com/linear-generics/linear-generics/issues |
| Source repo | head: git clone https://github.com/linear-generics/linear-generics |
| Distributions | Arch:0.2.3, LTSHaskell:0.2.3, NixOS:0.2.3, Stackage:0.2.3 |
| Reverse Dependencies | 2 direct, 17 indirect [details] |
| Downloads | 2150 total (23 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs uploaded by user [build log] All reported builds failed as of 2021-11-05 [all 2 reports] |