packages feed

functor-combinators-0.3.0.0: CHANGELOG.md

Changelog
=========

Version 0.3.0.0
---------------

*August 5, 2020*

<https://github.com/mstksg/functor-combinators/releases/tag/v0.3.0.0>

*   *Data.HBifunctor.Associative*, *Data.HBifunctor.Tensor*: Support for
    `Contravariant` and `Invariant` functor combinators. Main change to the
    infrastructure: add a `FunctorBy` associated constraint to `Associative` to
    signal what "sort of functor" the tensor supports: it should either be
    `Unconstrained`, `Functor`, `Contravariant`, or `Invariant`.
*   *Data.Functor.Contravariant.Divise*, *Data.Functor.Contravariant.Decide*,
    and *Data.Functor.Contravariant.Conclude*: Temporarily add in the
    semigroupoidal contravariant typeclasses. These should only be needed until
    they get merged into *semigroupoids*.
*   *Data.Functor.Contravariant.Divisible*: Add free structures for
    contravariant typeclass hierarchy.
*   Added in some new day convolutions:

    *   *Data.Functor.Contravariant.Night*: `Night`, a contravariant day
        convolution using `Either`, which is the tensor that generates
        `Conclude` (and `Decidable` kinda).
    *   *Data.Functor.Invariant.Day*: `Day`, an *invariant* day convolution
        using tuples.
    *   *Data.Functor.Invariant.Night*: `Night`, an *invariant* day convolution
        using either.

    For the invariant day convolutions, we *could* write free monoids on them
    (like `Ap`/`Div`/`Dec`).  But instead we just outsource our free structures
    to `Chain`, providing useful pattern synonyms and folding functions to
    pretend like we had an actual free structure.
*   *Data.Functor.Combinator*: Useful functions in for working with divisible
    and decidable contravariant functors: `divideN`, `diviseN`, `concludeN`,
    `decideN`, `divideNRec`, and `diviseNRec`.
*   `Contravariant` and `Invariant` instances for many types.
*   *Data.HFunctor.Final*: `FreeOf` adjusted to allow for contravariant free
    types.
*   *Data.Functor.Combinator.Unsafe*: Add `unsafeDivise` and `unsafeConclude`,
    to mirror the situation with `unsafeApply` and `unsafePlus`.

Version 0.2.0.0
---------------

*November 11, 2019*

<https://github.com/mstksg/functor-combinators/releases/tag/v0.2.0.0>

*   Major restructuring of the hbifunctor-based classes. `Data.HBifunctor.Associative`
    and `Data.HBifunctor.Tensor` are more or less completely rewritten; the
    typeclasses are restructured in order to more properly reflect the math
    that motivates them.  See the updated type classes to see what methods
    ended up where.

    However, much of the external API that is independent of the underlying
    abstraction is effectively unchanged (`biget`, etc.)

    For the most part, the migration would involve:

    *   `SF`, `MF` are now `NonEmptyBy` and `ListBy`, respectively.
    *   `-SF` and `-MF` as suffixes for function names now become `-NE` and
        `-LB`.

*   `upgradeC` no longer exists; use unsafe functions from
    *Data.Functor.Combinator.Unsafe* instead, on a per-tensor basis.

*   Restructuring of `Interpret`: It now takes an extra type parameter, the
    type to interpret into.  This makes it more consistent with the new `MonoidIn`
    and `SemigroupIn`.  Most of the external API should be effectively
    unchanged.

    For the most part, the migration would only affect people who *write*
    instances of `Interpret`.  Instead of

    ```haskell
    instance Interpret MyType where
        type C MyType = Monad
    ```

    you would write:

    ```haskell
    instance Monad f => Interpret MyType f where
    ```


Version 0.1.1.1
---------------

*July 13, 2019*

<https://github.com/mstksg/functor-combinators/releases/tag/v0.1.1.1>

*   Moved to *trivial-constraints-0.6.0.0*

Version 0.1.1.0
---------------

*June 19, 2019*

<https://github.com/mstksg/functor-combinators/releases/tag/v0.1.1.0>

*   `appendChain` and `appendChain1`

Version 0.1.0.1
---------------

*June 19, 2019*

<https://github.com/mstksg/functor-combinators/releases/tag/v0.1.0.1>

*   Small tweaks for haddock generation and dependency bounds.

Version 0.1.0.0
---------------

*June 19, 2019*

<https://github.com/mstksg/functor-combinators/releases/tag/v0.1.0.0>

*   Initial release