Changelog History
Page 1
-
v0.3.6.0 Changes
August 27, 2020
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.3.6.0
- Data.HFunctor.HTraversable added, providing
HTraversable
andHTraversable1
. - Control.Monad.Freer.Church: Missing
Apply
,Alt
, andPlus
instances added forComp
. - Data.HBifunctor:
HFunctor
instances forLeftF
,RightF
,Joker
,Void3
, andComp
made more kind-polymorphic - Data.HFunctor.Interpret:
itraverse
added, mimickinghtraverse
for properInterpret
instances. - Data.HFunctor.Chain:
foldChainA
andfoldChain1A
added, for effectful folding of chains.
- Data.HFunctor.HTraversable added, providing
-
v0.3.5.0 Changes
August 15, 2020
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.3.5.0
๐
DayChain
andNightChain
renamed toDivAp
andDecAlt
, to better reflect their abstracted nature ever since 0.3.4.0. The modules are renamed to Data.Functor.Invariant.DivAp and Data.Functor.Invariant.DecAlt.v0.3.5.1: Fixed infinite recursion bug for Tensor instances of invariant
Day
/Night
.
-
v0.3.4.0 Changes
August 14, 2020
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.3.4.0
- Data.HFunctor.Route: A new twist on getting invariant functor
combinators. Instead of creating new ones, utilize existing functor
combinators with
Pre
/Post
. Data.Functor.Invariant.Day.Chain and Data.Functor.Invariant.Night.Chain created, factoring out the
Chain
part of the invariantDay
/Night
. This was done to fix the fact that Data.Functor.Invariant.Day is a module that already existed in kan-extensions. Oops!- As a consequence,
DayChain
andNightChain
are now newtype wrappers instead of plain type synonyms.
- As a consequence,
v0.3.4.1: Add in missing
Functor
andInvariant
instances forProPre
andProPost
, as well as a bunch of instances forProPre
.v0.3.4.2: Add in missing
HFunctor
,Inject
,Interpret
instances forPostT
.
- Data.HFunctor.Route: A new twist on getting invariant functor
combinators. Instead of creating new ones, utilize existing functor
combinators with
-
v0.3.3.0 Changes
August 11, 2020
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.3.3.0
- Control.Applicative.ListF: Missing contravariant instances added for
MaybeF
. - Data.HFunctor: Add
injectMap
andinjectContramap
, two small utility functions that represent common patterns in injection and mapping. - Data.Functor.Combinator: Replace
divideN
and related functions withdsum
anddsum1
, which is an altogether cleaner interface that doesn't require heterogenous lists. A part of a larger project on cleaning upDivisible
tools. - Data.Functor.Contravariant.Divise: Add useful utility functions
dsum
and<:>
, which makes the type ofdivise
closer to that of<|>
andasum
. - ๐ Data.Functor.Contravariant.Divisible.Free: Implement
Div
in terms of a list, instead of the mirroredAp
. Should make it much easier to use, although a less-than-idealCoyoneda
is required to keep it compatible with the contravariantDay
in kan-extensions. Added patterns to recover the original interface.
- Control.Applicative.ListF: Missing contravariant instances added for
-
v0.3.2.0 Changes
August 9, 2020
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.3.2.0
- Data.HFunctor.Interpret:
icollect
,icollect1
now are more constrained: they only work on things that haveInterpret
instances for allMonoid m
orSemigroup m
inAltConst m
. While this doesn't affect how it works on any types in this library, it does make the type signature a little more clean (hiding the usage ofDList
) and prevents one from making an oddInterpret
instance that does something weird with theDList
. This also allows us to drop the direct dlist >= 1.0 dependency. - Data.HFunctor.Interpret:
biapply
,bifanout
,bifanout1
added as contravariant consumer versions ofiget
,icollect
, andicollect1
. - Data.HBifunctor.Associative:
bicollect
bicollect1
removed because they really don't make sense for associative tensors, which can only have at most one of each tensor. - Data.HBifunctor.Associative:
biapply
added as the contravariant consumer version ofbiget
. - Data.Functor.Invariant.Day: Add conversion functions from chains to the
covariant/invariant versions,
chainAp
,chainAp1
,chainDiv
, andchainDiv1
. - Data.Functor.Invariant.Night: Add conversion functions from chains to the
covariant/invariant versions,
chainDec
,chainDec1
,chainListF
,chainNonEmptyF
. Also add "undescored" versions to the covariant versions,toCoNight_
,chainListF_
,chainNonEmptyF_
, to more accurately represent the actual contravariant either-based day convolution. Also changedShare
toSwerve
. - Data.Functor.Combinator:
AltConst
re-exported.
- Data.HFunctor.Interpret:
-
v0.3.1.0 Changes
August 7, 2020
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.3.1.0
- Data.HFunctor.Interpret:
getI
andcollectI
made more efficient, and renamed toiget
andicollect
, respectively, to mirrorbiget
andbicollect
.getI
andcollectI
are left in with a deprecation warning.icollect1
added to ensure a non-empty collection.AltConst
added to aid in implementation. - Data.HBifunctor.Associative:
bicollect1
added to ensure a non-empty collection. biget and bicollect made more efficient. - Data.Functor.Contravariant.Night, Data.Functor.Invariant.Night:
refuted
added for a convenientNot
. MissingInvariant
instance forNot
also added. - Data.HFunctor.Chain:
chainPair
andchain1Pair
renamed totoChain
andtoChain1
, respectively, to mirrortoListBy
andtoNonEmptyBy
.
- Data.HFunctor.Interpret:
-
v0.3.0.0 Changes
August 5, 2020
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.3.0.0
- Data.HBifunctor.Associative, Data.HBifunctor.Tensor: Support for
Contravariant
andInvariant
functor combinators. Main change to the infrastructure: add aFunctorBy
associated constraint toAssociative
to signal what "sort of functor" the tensor supports: it should either beUnconstrained
,Functor
,Contravariant
, orInvariant
. - 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 usingEither
, which is the tensor that generatesConclude
(andDecidable
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 toChain
, providing useful pattern synonyms and folding functions to pretend like we had an actual free structure.- Data.Functor.Contravariant.Night:
Data.Functor.Combinator: Useful functions in for working with divisible and decidable contravariant functors:
divideN
,diviseN
,concludeN
,decideN
,divideNRec
, anddiviseNRec
.Contravariant
andInvariant
instances for many types.Data.HFunctor.Final:
FreeOf
adjusted to allow for contravariant free types.Data.Functor.Combinator.Unsafe: Add
unsafeDivise
andunsafeConclude
, to mirror the situation withunsafeApply
andunsafePlus
.
- Data.HBifunctor.Associative, Data.HBifunctor.Tensor: Support for
-
v0.2.0.0 Changes
November 19, 2019November 11, 2019
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.2.0.0
Major restructuring of the hbifunctor-based classes.
Data.HBifunctor.Associative
andData.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 nowNonEmptyBy
andListBy
, 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 newMonoidIn
andSemigroupIn
. 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 ofinstance Interpret MyType where type C MyType = Monad
you would write:
instance Monad f => Interpret MyType f where
-
v0.1.1.1 Changes
July 13, 2019July 13, 2019
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.1.1.1
- Moved to trivial-constraints-0.6.0.0
-
v0.1.1.0 Changes
June 19, 2019June 19, 2019
๐ https://github.com/mstksg/functor-combinators/releases/tag/v0.1.1.0
-
appendChain
andappendChain1
-