Changelog of @hackage/functor-combinators 0.3.0.0

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

    instance Interpret MyType where
        type C MyType = Monad
    

    you would write:

    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