<commit_before>homepage: ''
changelog-type: markdown
hash: 0669fc16a3d478e317737a42d0916978d81a370d95d35d50efd4ee1576260cca
test-bench-deps:
  base: ! '>=4.6 && <5'
  generics-sop: -any
maintainer: <EMAIL>
synopsis: Generic Programming using True Sums of Products
changelog: ! "# 0.3.0.0 (2017-04-29)\n\n* No longer compatible with GHC 7.6, due to
  the lack of\n  support for type-level literals.\n\n* Support type-level metadata.
  This is provided by the\n  `Generics.SOP.Type.Metadata` module. The two modules\n
  \ `Generics.SOP.Metadata` and `Generics.SOP.Type.Metadata`\n  export nearly the
  same names, so for backwards compatibility,\n  we keep exporting `Generics.SOP.Metadata`
  directly from\n  `Generics.SOP`, whereas `Generics.SOP.Type.Metadata` is\n  supposed
  to be imported explicitly (and qualified).\n\n  Term-level metadata is still available,
  but is now usually\n  computed automatically from the type-level metadata which\n
  \ contains the same information, using the function\n  `demoteDatatypeInfo`. Term-level
  metadata is unchanged\n  from generics-sop-0.2, so in most cases, even if your\n
  \ code makes use of metadata, you should not need to change\n  anything.\n\n  If
  you use TH deriving, then both type-level metadata and\n  term-level metadata is
  generated for you automatically,\n  for all supported GHC versions.\n\n  If you
  use GGP deriving, then type-level metadata is\n  available if you use GHC 8.0 or
  newer. If you use GHC 7.x,\n  then GHC.Generics supports only term-level metadata,
  so\n  we cannot translate that into type-level metadata. In\n  this combination,
  you cannot use code that relies on\n  type-level metadata, so you should either
  upgrade GHC or\n  switch to TH-based deriving.\n\n# 0.2.5.0 (2017-04-21)\n\n* GHC
  8.2 compatibility.\n\n* Make `:.:` an instance of `Applicative`, `Foldable` and\n
  \ `Traversable`.\n\n* Add functions `apInjs'_NP` and `apInjs'_POP`. These are\n
  \ variants of `apInjs_NP` and `apInjs'_POP` that return their\n  result as an n-ary
  product, rather than collapsing it into\n  a list.\n\n* Add `hexpand` (and `expand_NS`
  and `expand_SOP`). These\n  functions expand sums into products, given a default
  value\n  to fill the other slots.\n\n* Add utility functions such as `mapII` or
  `mapIK` that lift\n  functions into different combinations of identity and\n  constant
  functors.\n\n* Add `NFData` (and lifted variants) instances for basic functors,\n
  \ products and sums.\n\n# 0.2.4.0 (2017-02-02)\n\n* Add `hindex` (and `index_NS`
  and `index_SOP`).\n\n* Add `hapInjs` as a generalization of `apInjs_NP` and `apInjs_POP`.\n\n*
  Make basic functors instances of lifted classes (such as `Eq1` etc).\n\n# 0.2.3.0
  (2016-12-04)\n\n* Add various metadata getters\n\n* Add `hdicts`.\n\n* Add catamorphisms
  and anamorphisms for `NP` and `NS`.\n\n* TH compatibility changes for GHC 8.1 (master).\n\n#
  0.2.2.0 (2016-07-10)\n\n* Introduced `unZ` to destruct a unary sum.\n\n* Add Haddock
  `@since` annotations for various functions.\n\n# 0.2.1.0 (2016-02-08)\n\n* Now includes
  a CHANGELOG.\n\n* Should now work with ghc-8.0.1-rc1 and -rc2 (thanks to\n  Oleg
  Grenrus).\n\n* Introduced `hd` and `tl` to project out of a product, and\n  `Projection`
  and `projections` as duals of `Injection` and\n  `injections`.\n\n# 0.2.0.0 (2015-10-23)\n\n*
  Now tested with ghc-7.10\n\n* Introduced names `hmap`, `hcmap`, `hzipWith`, `hczipWith`
  for\n  `hliftA`, `hcliftA`, `hliftA2`, `hcliftA2`, respectively.\n  Similarly for
  the specialized versions of these functions.\n\n* The constraint transformers `All`
  and `All2` are now defined\n  as type classes, not type families. As a consequence,
  the\n  partial applications `All c` and `All2 c` are now possible.\n\n* Because
  of the redefinition of `All` and `All2`, some special\n  cases are no longer necessary.
  For example, `cpure_POP` can\n  now be implemented as a nested application of `pure_NP`.\n\n*
  Because of the redefinition of `All` and `All2`, the functions\n  `hcliftA'` and
  variants (with prime!) are now deprecated.\n  One can easily use the normal versions
  instead.\n  For example, the definition of `hcliftA'` is now simply\n\n      hcliftA'
  p = hcliftA (allP p)\n        where\n\t      allP :: proxy c -> Proxy (All c)\n\t\t
  \ allP _ = Proxy\n\n* Because `All` and `All2` are now type classes, they now have\n
  \ superclass constraints implying that the type-level lists they\n  are ranging
  over must have singletons.\n\n      class (SListI xs,  ...) => All c xs\n      class
  (SListI xss, ...) => All2 c xss\n\n  Some type signatures can be simplified due
  to this.\n\n* The `SingI` typeclass and `Sing` datatypes are now deprecated.\n  The
  replacements are called `SListI` and `SList`.\n  The `sing` method is now called
  `sList`. The difference\n  is that the new versions reveal only the spine of the
  list, and\n  contain no singleton representation for the elements anymore.\n\n  For
  one-dimensional type-level lists, replace\n\n      SingI xs => ... \n\n  by\n\n
  \     SListI xs => ...\n\n  For two-dimensional type-level lists, replace\n\n      SingI
  xss => ...\n\n  by\n\n      All SListI xss => ...\n\n  Because All itself implies
  `SListI xss` (see above), this\n  constraint is equivalent to the old `Sing xss`.\n\n
  \ The old names are provided for (limited) backward\n  compatibility. They map to
  the new constructs. This will\n  work in some, but not all scenarios.\n\n  The function
  `lengthSing` has also been renamed to\n  `lengthSList` for consistency, and the
  old name is\n  deprecated.\n\n* All `Proxy c` arguments have been replaced by `proxy
  c`\n  flexible arguments, so that other type constructors can be\n  used as proxies.\n\n*
  Class-level composition (`Compose`), pairing (`And`), and\n  a trivial constraint
  (`Top`) have been added. Type-level map\n  (`Map`) has been removed. Occurrences
  such as\n\n      All c (Map f xs)\n\n  should now be replaced with\n\n      All
  (c `Compose` f) xs\n\n* There is a new module called `Generics.SOP.Dict` that contains\n
  \ functions for manipulating dictionaries explicitly. These can\n  be used to prove
  theorems about non-trivial class constraints\n  such as the ones that get built
  using `All` and `All2`. Some\n  such theorems are provided.\n\n* There is a new
  TH function `deriveGenericFunctions` that\n  derives the code of a datatype and
  conversion functions, but\n  does not create a class instance. (Contributed by Oleg
  Grenrus.)\n\n* There is a new TH function `deriveMetadataValue` that\n  derives
  a `DatatypeInfo` value for a datatype, but does\n  not create an instance of `HasDatatypeInfo`.
  (Contributed by\n  <NAME>.)\n\n* There is a very simple example file. (Contributed
  by Oleg\n  Grenrus.)\n\n* The function `hcollapse` for `NS` now results in an `a`
  rather\n  than an `I a`, matching the specialized version `collapse_NS`.\n  (Suggested
  by <NAME>.)\n\n# 0.1.1.2 (2015-03-27)\n\n* Updated version bounds for ghc-prim
  (for ghc-7.10).\n\n# 0.1.1.1 (2015-03-20)\n\n* Preparations for ghc-7.10.\n\n* Documentation
  fix. (Contributed by <NAME>.)\n\n# 0.1.1 (2015-01-06)\n\n* Documentation
  fixes.\n\n* Add superclass constraint (TODO).\n\n* Now derive tuple instance for
  tuples up to 30 components.\n  (Contributed by <NAME>.)\n\n"
basic-deps:
  base: ! '>=4.6 && <5'
  ghc-prim: ! '>=0.3 && <0.6'
  transformers: ! '>=0.3 && <0.6'
  deepseq: ! '>=1.3 && <1.5'
  template-haskell: ! '>=2.8 && <2.13'
  transformers-compat: ! '>=0.3 && <0.6'
all-versions:
- '0.1.0.0'
- '0.1.0.1'
- '0.1.0.2'
- '0.1.0.3'
- '0.1.0.4'
- '0.1.1'
- '0.1.1.1'
- '0.1.1.2'
- '0.2.0.0'
- '0.2.1.0'
- '0.2.2.0'
- '0.2.3.0'
- '0.2.4.0'
- '0.2.5.0'
- '0.3.0.0'
author: <NAME> <<EMAIL>>, <NAME> <<EMAIL>>
latest: '0.3.0.0'
description-type: haddock
description: ! 'A library to support the definition of generic functions.

  Datatypes are viewed in a uniform, structured way:

  the choice between constructors is represented using an n-ary

  sum, and the arguments of each constructor are represented using

  an n-ary product.


  The module "Generics.SOP" is the main module of this library and contains

  more detailed documentation.


  Examples of using this library are provided by the following

  packages:


  * @<https://hackage.haskell.org/package/basic-sop basic-sop>@ basic examples,


  * @<https://hackage.haskell.org/package/pretty-sop pretty-sop>@ generic pretty printing,


  * @<https://hackage.haskell.org/package/lens-sop lens-sop>@ generically computed
  lenses,


  * @<https://hackage.haskell.org/package/json-sop json-sop>@ generic JSON conversions.


  A detailed description of the ideas behind this library is provided by

  the paper:


  * <NAME> and <NAME>.

  <http://www.andres-loeh.de/TrueSumsOfProducts True Sums of Products>.

  Workshop on Generic Programming (WGP) 2014.

'
license-name: BSD3
<commit_msg>Update from Hackage at 2017-04-29T20:38:34Z<commit_after>homepage: ''
changelog-type: markdown
hash: 35a799ef954413d448a3e8451725b0b886240591cac1a456322f0253aa55d57e
test-bench-deps:
  base: ! '>=4.6 && <5'
  generics-sop: -any
maintainer: <EMAIL>
synopsis: Generic Programming using True Sums of Products
changelog: ! "# 0.3.0.0 (2017-04-29)\n\n* No longer compatible with GHC 7.6, due to
  the lack of\n  support for type-level literals.\n\n* Support type-level metadata.
  This is provided by the\n  `Generics.SOP.Type.Metadata` module. The two modules\n
  \ `Generics.SOP.Metadata` and `Generics.SOP.Type.Metadata`\n  export nearly the
  same names, so for backwards compatibility,\n  we keep exporting `Generics.SOP.Metadata`
  directly from\n  `Generics.SOP`, whereas `Generics.SOP.Type.Metadata` is\n  supposed
  to be imported explicitly (and qualified).\n\n  Term-level metadata is still available,
  but is now usually\n  computed automatically from the type-level metadata which\n
  \ contains the same information, using the function\n  `demoteDatatypeInfo`. Term-level
  metadata is unchanged\n  from generics-sop-0.2, so in most cases, even if your\n
  \ code makes use of metadata, you should not need to change\n  anything.\n\n  If
  you use TH deriving, then both type-level metadata and\n  term-level metadata is
  generated for you automatically,\n  for all supported GHC versions.\n\n  If you
  use GGP deriving, then type-level metadata is\n  available if you use GHC 8.0 or
  newer. If you use GHC 7.x,\n  then GHC.Generics supports only term-level metadata,
  so\n  we cannot translate that into type-level metadata. In\n  this combination,
  you cannot use code that relies on\n  type-level metadata, so you should either
  upgrade GHC or\n  switch to TH-based deriving.\n\n# 0.2.5.0 (2017-04-21)\n\n* GHC
  8.2 compatibility.\n\n* Make `:.:` an instance of `Applicative`, `Foldable` and\n
  \ `Traversable`.\n\n* Add functions `apInjs'_NP` and `apInjs'_POP`. These are\n
  \ variants of `apInjs_NP` and `apInjs'_POP` that return their\n  result as an n-ary
  product, rather than collapsing it into\n  a list.\n\n* Add `hexpand` (and `expand_NS`
  and `expand_SOP`). These\n  functions expand sums into products, given a default
  value\n  to fill the other slots.\n\n* Add utility functions such as `mapII` or
  `mapIK` that lift\n  functions into different combinations of identity and\n  constant
  functors.\n\n* Add `NFData` (and lifted variants) instances for basic functors,\n
  \ products and sums.\n\n# 0.2.4.0 (2017-02-02)\n\n* Add `hindex` (and `index_NS`
  and `index_SOP`).\n\n* Add `hapInjs` as a generalization of `apInjs_NP` and `apInjs_POP`.\n\n*
  Make basic functors instances of lifted classes (such as `Eq1` etc).\n\n# 0.2.3.0
  (2016-12-04)\n\n* Add various metadata getters\n\n* Add `hdicts`.\n\n* Add catamorphisms
  and anamorphisms for `NP` and `NS`.\n\n* TH compatibility changes for GHC 8.1 (master).\n\n#
  0.2.2.0 (2016-07-10)\n\n* Introduced `unZ` to destruct a unary sum.\n\n* Add Haddock
  `@since` annotations for various functions.\n\n# 0.2.1.0 (2016-02-08)\n\n* Now includes
  a CHANGELOG.\n\n* Should now work with ghc-8.0.1-rc1 and -rc2 (thanks to\n  Oleg
  Grenrus).\n\n* Introduced `hd` and `tl` to project out of a product, and\n  `Projection`
  and `projections` as duals of `Injection` and\n  `injections`.\n\n# 0.2.0.0 (2015-10-23)\n\n*
  Now tested with ghc-7.10\n\n* Introduced names `hmap`, `hcmap`, `hzipWith`, `hczipWith`
  for\n  `hliftA`, `hcliftA`, `hliftA2`, `hcliftA2`, respectively.\n  Similarly for
  the specialized versions of these functions.\n\n* The constraint transformers `All`
  and `All2` are now defined\n  as type classes, not type families. As a consequence,
  the\n  partial applications `All c` and `All2 c` are now possible.\n\n* Because
  of the redefinition of `All` and `All2`, some special\n  cases are no longer necessary.
  For example, `cpure_POP` can\n  now be implemented as a nested application of `pure_NP`.\n\n*
  Because of the redefinition of `All` and `All2`, the functions\n  `hcliftA'` and
  variants (with prime!) are now deprecated.\n  One can easily use the normal versions
  instead.\n  For example, the definition of `hcliftA'` is now simply\n\n      hcliftA'
  p = hcliftA (allP p)\n        where\n\t      allP :: proxy c -> Proxy (All c)\n\t\t
  \ allP _ = Proxy\n\n* Because `All` and `All2` are now type classes, they now have\n
  \ superclass constraints implying that the type-level lists they\n  are ranging
  over must have singletons.\n\n      class (SListI xs,  ...) => All c xs\n      class
  (SListI xss, ...) => All2 c xss\n\n  Some type signatures can be simplified due
  to this.\n\n* The `SingI` typeclass and `Sing` datatypes are now deprecated.\n  The
  replacements are called `SListI` and `SList`.\n  The `sing` method is now called
  `sList`. The difference\n  is that the new versions reveal only the spine of the
  list, and\n  contain no singleton representation for the elements anymore.\n\n  For
  one-dimensional type-level lists, replace\n\n      SingI xs => ... \n\n  by\n\n
  \     SListI xs => ...\n\n  For two-dimensional type-level lists, replace\n\n      SingI
  xss => ...\n\n  by\n\n      All SListI xss => ...\n\n  Because All itself implies
  `SListI xss` (see above), this\n  constraint is equivalent to the old `Sing xss`.\n\n
  \ The old names are provided for (limited) backward\n  compatibility. They map to
  the new constructs. This will\n  work in some, but not all scenarios.\n\n  The function
  `lengthSing` has also been renamed to\n  `lengthSList` for consistency, and the
  old name is\n  deprecated.\n\n* All `Proxy c` arguments have been replaced by `proxy
  c`\n  flexible arguments, so that other type constructors can be\n  used as proxies.\n\n*
  Class-level composition (`Compose`), pairing (`And`), and\n  a trivial constraint
  (`Top`) have been added. Type-level map\n  (`Map`) has been removed. Occurrences
  such as\n\n      All c (Map f xs)\n\n  should now be replaced with\n\n      All
  (c `Compose` f) xs\n\n* There is a new module called `Generics.SOP.Dict` that contains\n
  \ functions for manipulating dictionaries explicitly. These can\n  be used to prove
  theorems about non-trivial class constraints\n  such as the ones that get built
  using `All` and `All2`. Some\n  such theorems are provided.\n\n* There is a new
  TH function `deriveGenericFunctions` that\n  derives the code of a datatype and
  conversion functions, but\n  does not create a class instance. (Contributed by Oleg
  Grenrus.)\n\n* There is a new TH function `deriveMetadataValue` that\n  derives
  a `DatatypeInfo` value for a datatype, but does\n  not create an instance of `HasDatatypeInfo`.
  (Contributed by\n  <NAME>.)\n\n* There is a very simple example file. (Contributed
  by Oleg\n  Grenrus.)\n\n* The function `hcollapse` for `NS` now results in an `a`
  rather\n  than an `I a`, matching the specialized version `collapse_NS`.\n  (Suggested
  by <NAME>.)\n\n# 0.1.1.2 (2015-03-27)\n\n* Updated version bounds for ghc-prim
  (for ghc-7.10).\n\n# 0.1.1.1 (2015-03-20)\n\n* Preparations for ghc-7.10.\n\n* Documentation
  fix. (Contributed by <NAME>.)\n\n# 0.1.1 (2015-01-06)\n\n* Documentation
  fixes.\n\n* Add superclass constraint (TODO).\n\n* Now derive tuple instance for
  tuples up to 30 components.\n  (Contributed by <NAME>.)\n\n"
basic-deps:
  base: ! '>=4.7 && <5'
  ghc-prim: ! '>=0.3 && <0.6'
  transformers: ! '>=0.3 && <0.6'
  deepseq: ! '>=1.3 && <1.5'
  template-haskell: ! '>=2.8 && <2.13'
  transformers-compat: ! '>=0.3 && <0.6'
all-versions:
- '0.1.0.0'
- '0.1.0.1'
- '0.1.0.2'
- '0.1.0.3'
- '0.1.0.4'
- '0.1.1'
- '0.1.1.1'
- '0.1.1.2'
- '0.2.0.0'
- '0.2.1.0'
- '0.2.2.0'
- '0.2.3.0'
- '0.2.4.0'
- '0.2.5.0'
- '0.3.0.0'
author: <NAME> <<EMAIL>>, <NAME> <<EMAIL>>
latest: '0.3.0.0'
description-type: haddock
description: ! 'A library to support the definition of generic functions.

  Datatypes are viewed in a uniform, structured way:

  the choice between constructors is represented using an n-ary

  sum, and the arguments of each constructor are represented using

  an n-ary product.


  The module "Generics.SOP" is the main module of this library and contains

  more detailed documentation.


  Examples of using this library are provided by the following

  packages:


  * @<https://hackage.haskell.org/package/basic-sop basic-sop>@ basic examples,


  * @<https://hackage.haskell.org/package/pretty-sop pretty-sop>@ generic pretty printing,


  * @<https://hackage.haskell.org/package/lens-sop lens-sop>@ generically computed
  lenses,


  * @<https://hackage.haskell.org/package/json-sop json-sop>@ generic JSON conversions.


  A detailed description of the ideas behind this library is provided by

  the paper:


  * <NAME> and <NAME>.

  <http://www.andres-loeh.de/TrueSumsOfProducts True Sums of Products>.

  Workshop on Generic Programming (WGP) 2014.

'
license-name: BSD3

{'fraction_non_alphanumeric': 0.1260588497547927, 'fraction_numerical': 0.03382746321890325, 'mean_word_length': 3.2716019995239227, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 67, 'https://': 8, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 48, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2203699', 'n_tokens_mistral': 6759, 'n_tokens_neox': 6382, 'n_words': 2210}