_            _    _        _         _
      /\ \         /\ \ /\ \     /\_\      / /\
      \_\ \       /  \ \\ \ \   / / /     / /  \
      /\__ \     / /\ \ \\ \ \_/ / /     / / /\ \__
     / /_ \ \   / / /\ \ \\ \___/ /     / / /\ \___\
    / / /\ \ \ / / /  \ \_\\ \ \_/      \ \ \ \/___/
   / / /  \/_// / /   / / / \ \ \        \ \ \
  / / /      / / /   / / /   \ \ \   _    \ \ \
 / / /      / / /___/ / /     \ \ \ /_/\__/ / /
/_/ /      / / /____\/ /       \ \_\\ \/___/ /
\_\/       \/_________/         \/_/ \_____\/
ghc-linear-generics 0.2.3
Dependencies: ghc-th-abstraction@0.7.2.0
Channel: zlqrvx
Location: zlqrvx/packages/haskell-xyz.scm (zlqrvx packages haskell-xyz)
Home page: https://github.com/linear-generics/linear-generics
Licenses: Modified BSD
Build system: haskell
Synopsis: Generic programming library for generalised deriving.
Description:

This package offers a version of <https://hackage.haskell.org/package/base/docs/GHC-Generics.html GHC.Generics> with two important improvements: . 1. The @to@, @from@, @to1@, and @from1@ methods have multiplicity-polymorphic types, allowing them to be used with either traditional Haskell code or linearly typed code. . 2. The representations used for @Generic1@ are modified slightly. As a result, @to1@ and @from1@ never need to use @fmap@. This can <https://gitlab.haskell.org/ghc/ghc/-/issues/15969 greatly improve performance>, and it is <https://github.com/tweag/linear-base/pull/316 necessary to support multiplicity polymorphism>. A smaller change, approximately <https://gitlab.haskell.org/ghc/ghc/-/issues/7492 as proposed by spl>, reduces the number of instances that must be written to actually use @Generic1@ for deriving instances of other classes. . For more details, see the "Generics.Linear" documentation. . The implementation is based on the @generic-deriving@ package, first described in the paper . * /A generic deriving mechanism for Haskell/. Jose Pedro Magalhaes, Atze Dijkstra, Johan Jeuring, and Andres Loeh. Haskell'10. . 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 @DerivingVia@ targets to derive @Generic@ and @Generic1@ instances from @"GHC.Generics".'GHC.Generics.Generic'@. Because these instances necessarily use unsafe coercions, their use will likely inhibit full optimization of code using them. . Educational code: the educational modules exported by <https://hackage.haskell.org/package/generic-deriving 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@.

Total packages: 1