<commit_before>homepage: https://github.com/sellout/yaya#readme
changelog-type: markdown
hash: fb1ce6e2b50355468e7810534ac757dff84e333e0f0b4f81e0fea1bcf9e1d35d
test-bench-deps:
  base: -any
  deriving-compat: -any
  yaya: ! '>=0.1.0'
  hedgehog: -any
  yaya-hedgehog: ! '>=0.1.0'
maintainer: <EMAIL>
synopsis: Total recursion schemes.
changelog: |
  # Changelog
  All notable changes to this project will be documented in this file.

  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
  and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/).

  ## 0.2.0.0 – 2019–01–08
  ### Added
  - `DFunctor` instances for `Mu` and `Nu`
  - lower bounds on internal yaya dependencies

  ### Changed
  - moved `DFunctor` and `HFunctor` to a new `Yaya.Functor` module
  - renamed `cursiveIso` to `steppableIso`

  ## 0.1.0.0 – 2019–01–04
  ### Added
  - everything (this is the initial release)
basic-deps:
  free: -any
  either: -any
  base: ! '>=4.7 && <5'
  comonad: -any
  distributive: -any
  kan-extensions: -any
  constraints: -any
  containers: -any
  lens: -any
  bifunctors: -any
  transformers: -any
  errors: -any
  template-haskell: -any
  profunctors: -any
all-versions:
- 0.1.0.0
- 0.2.0.0
author: <NAME>
latest: 0.2.0.0
description-type: markdown
description: |
  # Yaya

  Yet another … yet another recursion scheme library for Haskell.

  ## Overview

  Recursion schemes allow you to separate _any_ recursion from your business logic, writing step-wise operations that can be applied in a way that guarantees termination (or, dually, progress).

  How is this possible? You can’t have totality _and_ Turing-completeness, can you? Oh, but [you can](https://pdfs.semanticscholar.org/e291/5b546b9039a8cf8f28e0b814f6502630239f.pdf) – there is a particular type, `Partial a` (encoded with a fixed-point) that handles potential non-termination, akin to the way that `Maybe a` handles exceptional cases. It can be folded into `IO` in your main function, so that the runtime can execute a Turing-complete program that was modeled totally.

  ## organization

  This organization is intended to make this a lightly-opinionated library. You should only need to import one module (per package) into any module of yours.

  * `Pattern` – This is what you should use most of the time. It provides common pattern functors that aren’t found elsewhere as well as other operations that are useful when you’re defining your own algebras.
  * `Fold` – This (and its submodules) provides algebra transformers, fixed-point operators, and other things you use when applying folds.
  * `Retrofit` – Utilities for making your existing data types compatible with recursion schemes.
  * `Applied` – A number of commonly-useful utilies defined as folds. Intended both as examples and code that you can actually use in your projects.
  * `Zoo` – Names that you may have seen in the recursion scheme literature, but that we generally avoid using here. In general, prefer the right-hand side of these definitions, which shouldn’t require importing this module.

  ## Some (hopefully) helpful guidelines

  Greek characters (and names) for things can often add confusion, however, there are some that we’ve kept here because I think (with the right mnemonic) they are actually clarifying.

  - `φ` – an algebra – “phi” (pronounced “fye” or “fee”)
  - `ψ` – a coalgebra – “psi” (pronounced “sai” or “see”)<commit_msg>Update from Hackage at 2019-01-09T03:51:31Z<commit_after>homepage: https://github.com/sellout/yaya#readme
changelog-type: markdown
hash: 845ec345bf4292e588509087047888d43384a0c25f353e161fd83c12761eb533
test-bench-deps:
  base: -any
  deriving-compat: -any
  yaya: ! '>=0.1.0'
  hedgehog: -any
  yaya-hedgehog: ! '>=0.1.0'
maintainer: <EMAIL>
synopsis: Total recursion schemes.
changelog: |
  # Changelog
  All notable changes to this project will be documented in this file.

  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
  and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/).

  ## 0.2.1.0 – 2019–01–08
  ### Added
  - exports of type class methods via `Yaya.Retrofit`

  ## 0.2.0.0 – 2019–01–08
  ### Added
  - `DFunctor` instances for `Mu` and `Nu`
  - lower bounds on internal yaya dependencies

  ### Changed
  - moved `DFunctor` and `HFunctor` to a new `Yaya.Functor` module
  - renamed `cursiveIso` to `steppableIso`

  ## 0.1.0.0 – 2019–01–04
  ### Added
  - everything (this is the initial release)
basic-deps:
  free: -any
  either: -any
  base: ! '>=4.7 && <5'
  comonad: -any
  distributive: -any
  kan-extensions: -any
  constraints: -any
  containers: -any
  lens: -any
  bifunctors: -any
  transformers: -any
  errors: -any
  template-haskell: -any
  profunctors: -any
all-versions:
- 0.1.0.0
- 0.2.0.0
- 0.2.1.0
author: <NAME>
latest: 0.2.1.0
description-type: markdown
description: |
  # Yaya

  Yet another … yet another recursion scheme library for Haskell.

  ## Overview

  Recursion schemes allow you to separate _any_ recursion from your business logic, writing step-wise operations that can be applied in a way that guarantees termination (or, dually, progress).

  How is this possible? You can’t have totality _and_ Turing-completeness, can you? Oh, but [you can](https://pdfs.semanticscholar.org/e291/5b546b9039a8cf8f28e0b814f6502630239f.pdf) – there is a particular type, `Partial a` (encoded with a fixed-point) that handles potential non-termination, akin to the way that `Maybe a` handles exceptional cases. It can be folded into `IO` in your main function, so that the runtime can execute a Turing-complete program that was modeled totally.

  ## organization

  This organization is intended to make this a lightly-opinionated library. You should only need to import one module (per package) into any module of yours.

  * `Pattern` – This is what you should use most of the time. It provides common pattern functors that aren’t found elsewhere as well as other operations that are useful when you’re defining your own algebras.
  * `Fold` – This (and its submodules) provides algebra transformers, fixed-point operators, and other things you use when applying folds.
  * `Retrofit` – Utilities for making your existing data types compatible with recursion schemes.
  * `Applied` – A number of commonly-useful utilies defined as folds. Intended both as examples and code that you can actually use in your projects.
  * `Zoo` – Names that you may have seen in the recursion scheme literature, but that we generally avoid using here. In general, prefer the right-hand side of these definitions, which shouldn’t require importing this module.

  ## Some (hopefully) helpful guidelines

  Greek characters (and names) for things can often add confusion, however, there are some that we’ve kept here because I think (with the right mnemonic) they are actually clarifying.

  - `φ` – an algebra – “phi” (pronounced “fye” or “fee”)
  - `ψ` – a coalgebra – “psi” (pronounced “sai” or “see”)
{'fraction_non_alphanumeric': 0.09340892983699504, 'fraction_numerical': 0.03827072997873848, 'mean_word_length': 3.9446391030133148, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 13, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 12, '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': '3586190', 'n_tokens_mistral': 2427, 'n_tokens_neox': 2201, 'n_words': 905}