Changelog for semigroupoids-6.0.1
6.0.1 [2024.05.04]
- Fix a build error when compiling with
-f-contravariant
.
6.0.0.1 [2023.03.16]
- When building with GHC 9.6, require
transformers >= 0.6.1
andcontainers >= 0.6.7
. This ensures thatsemigroupoids
always providesTraversable1
instances for data types fromtransformers
andcontainers
unconditionally.
6 [2023.03.12]
-
Drop support for GHC 7.10 and earlier.
-
The
Foldable1
andBifoldable1
classes have been migrated:- When building with
base-4.18
or later,semigroupoids
re-exportsFoldable1
andBifoldable1
frombase
. (These classes were added tobase-4.18
as a result of this Core Libraries proposal.) - When building with older versions of
base
,semigroupoids
re-exportsFoldable1
andBifoldable1
from thefoldable1-classes-compat
compatibility package.
Note that the version of
Foldable1
thatsemigroupoids
defined in previous releases only had three class methods:fold1
,foldMap1
, andtoNonEmpty
. Moreover,foldMap1
had a default implementation in terms of aFoldable
constraint.base
's version ofFoldable1
, however, has some notable differences:- It has many more methods than the three listed above, such as the
foldrMap1
method. foldMap1
now has a default implementation in terms offoldrMap1
instead of in terms of aFoldable
constraint.
To avoid (1) causing issues when upgrading to
semigroupoids-6
,Data.Semigroup.Foldable
only re-exports thefold1
,foldMap1
, andtoNonEmpty
methods, which reflects the API in previoussemigroupoids
releases. If you want to use the other, new class methods ofFoldable1
, consider importing it fromData.Foldable1
(its home inbase
) instead.Difference (2) is trickier, because it is possible that existing code that defines valid
Foldable1
instances will need to be migrated. If you have an instance like this:import Data.Semigroup.Foldable data T a = MkT a instance Foldable T where foldMap f (MkT x) = f x instance Foldable1 T -- Relying on Foldable-based defaults
Then calling
foldMap1
onT
will throw an error withsemigroupoids-6
, asfoldMap1
's default implementation no longer usesFoldable
. To migrate this code, change the instance to explicitly definefoldMap1
:instance Foldable1 T where foldMap1 f (MkT x) = f x
This approach should be backwards-compatible with previous
semigroupoids
releases.Some other side effects of this migration include:
- The
Data.Semigroup.Foldable.Class
module has been deprecated. It no longer serves a useful role, as it simply re-exports a limited subset of theData.Foldable1
andData.Bifoldable1
API. - All of the
Foldable1
andBifoldable1
instances that were previously defined insemigroupoids
have now been migrated to downstream libraries (base
,bifunctors
,containers
,tagged
, andtransformers
), so it is no longer strictly necessary to depend onsemigroupoids
to make use of these instances.
- When building with
-
Add
Generic1
-based functions for many classes, useful for writing instances:Data.Functor.Alt.(<!>)
->Data.Functor.Alt.galt
Data.Functor.Apply.{liftF2,liftF3}
->Data.Functor.Apply.{gliftF2,gliftF3}
Data.Functor.Bind.(>>-)
->Data.Functor.Bind.gbind
Data.Functor.Contravariant.Conclude.{conclude,concluded}
->Data.Functor.Contravariant.Conclude.{gconclude,gconcluded}
Data.Functor.Contravariant.Decide.{decide,decided}
->Data.Functor.Contravariant.Decide.{gdecide,gdecided}
Data.Functor.Contravariant.Divise.{divise,divised}
->Data.Functor.Contravariant.Divise.{gdivise,gdivised}
Data.Functor.Extend.{duplicated,extended}
->Data.Functor.Extend.{gduplicated,gextended}
Data.Functor.Plus.zero
->Data.Functor.Plus.gzero
Data.Semigroup.Foldable.{fold1,foldMap1,toNonEmpty}
->Data.Semigroup.Foldable.{gfold1,gfoldMap1,gtoNonEmpty}
Data.Semigroup.Traversable.{traverse1,sequence1}
->Data.Semigroup.Traversable.{gtraverse1,gsequence1}
5.3.7 [2022.01.09]
-
Relax the
Bind
constraints in the following instances toFunctor
:-instance (Bind f, Monad f) => Alt (MaybeT f) -instance (Bind f, Monad f) => Plus (MaybeT f) +instance (Functor f, Monad f) => Alt (MaybeT f) +instance (Functor f, Monad f) => Plus (MaybeT f) -instance (Bind f, Monad f, Semigroup e) => Alt (ExceptT e f) -instance (Bind f, Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f) +instance (Functor f, Monad f, Semigroup e) => Alt (ExceptT e f) +instance (Functor f, Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f) -- If building with transformers-0.5.* or older -instance (Bind f, Monad f) => Alt (ErrorT e f) -instance (Bind f, Monad f, Error e) => Plus (ErrorT e f +instance (Functor f, Monad f) => Alt (ErrorT e f) +instance (Functor f, Monad f, Error e) => Plus (ErrorT e f)
5.3.6 [2021.10.07]
- Allow building with GHC 9.2.
- Allow building with
transformers-0.6.*
. - Add
Alt
instance forIdentity
. - Add
Conclude
,Decide
andDivise
type classes and instances. - Add
(<.*>)
,(<*.>)
, andtraverseMaybe
functions, which make it easier to definedTraversable1
instances for data types that have fields with a combination ofTraversable
andTraversable1
instances. - Add
Semigroupoids.Do
module with overloads for use withQualifiedDo
. - Add
Apply
,Alt
,Plus
,Bind
andBindTrans
instances for the CPS versions ofWriterT
andRWST
. - Add
psum
function toData.Functor.Plus
. - Add
Categorical
data type.
5.3.5 [2020.12.31]
- The build-type has been changed from
Custom
toSimple
. To achieve this, thedoctests
test suite has been removed in favor of usingcabal-docspec
to run the doctests. - Explicitly mark modules as
Safe
.
5.3.4 [2019.11.26]
- Achieve forward compatibility with GHC proposal 229.
5.3.3 [2019.08.27]
- Add
Alt
andPlus
instances forHashMap
from theunordered-containers
package.
5.3.2 [2019.01.04]
- Bump the lower bound on
semigroups
to 0.16.2, and avoid incurring the dependency entirely on recent GHCs. - Fix the build on GHC 7.0 and 7.2.
5.3.1 [2018.07.02]
- Fix a regression introduced in
semigroupoids-5.3
in which some modules regressed fromTrustworthy
toUnsafe
.
5.3 [2018.07.02]
- Allow building with
containers-0.6
. - Add
Alt
instances forFirst
andLast
fromData.Semigroup
, andAlt
andPlus
instances forFirst
andLast
fromData.Monoid
. - Add missing
Apply
,Bind
,Extend
,Foldable1
andTraversable1
instances forData.Semigroups
,Data.Monoid
andGHC.Generics
.
5.2.2 [2018.01.18]
- Add
optional
toData.Functor.Alt
(analogous to theoptional
function inControl.Applicative
) liftF2
is now a class method ofApply
(mirroring the fact thatliftA2
is now a class method ofApplicative
).liftF2
and(<.>)
have default definitions in terms of the other.- Allow building with GHC 8.4
Apply
andBind
instances forQ
, from thetemplate-haskell
package. (As a consequence,Data.Semigroup.Foldable
is no longer aTrustworthy
module.)- Add instances for
(:~:)
and(:~~:)
fromData.Type.Equality
, andCoercion
fromData.Type.Coercion
5.2.1
- Add the
toNonEmpty
method toFoldable1
. AddfoldrM1
andfoldlM1
functions toData.Semigroup.Foldable
that are defined in terms oftoNonEmpty
. - Add
Apply
,Bind
,Foldable1
, andTraversable1
instances forComplex
- Add
Apply
andBind
instances forHashMap
from theunordered-containers
package (on whichsemigroupoids
now depends) - Add
Semigroupoid
instances forTagged
andConst
5.2
- Revamp
Setup.hs
to usecabal-doctest
. This makes it build withCabal-1.25
, and makes thedoctest
s work withcabal new-build
and sandboxes. - Added instances to
Alt
,Plus
,Apply
,Bind
andExtend
forGHC.Generics
,Tagged
andProxy
where appropriate.
5.1
- The remaining orphan instances in
Data.Traversable.Instances
have been replaced in favor of the orphan instances fromtransformers-compat-0.5
. - The documentation now states laws that instances of
Apply
are expected to uphold. doctest-0.11
support- Fixed compilation of tests with
stack
5.0.1
transformers-compat
0.5 support- Removed some redundant constraints.
- GHC 8 support
5.0.0.4
doctest
0.10 support
5.0.0.2
- Bugfix for GHC 7.4. PolyKinds on 7.4 cause all sorts of haskell interface file errors. One of the #if guards that turned it off on 7.4 was missing and has been fixed.
5.0.0.1
- Added the CHANGELOG to the distribution so that
hackage
can link to it in the haddocks.
5
- Absorbed
Data.Bifunctor.Apply
,Data.Semigroup.Bifoldable
andData.Semigroup.Traversable
frombifunctors
. - This caused us to pick up a dependency on
tagged
. - Exiled
Data.Semifunctor.*
,Data.Semigroupoid.Product
andData.Semigroupoid.Coproduct
tosemigroupoid-extras
. - This let us open up to older versions of GHC again.
- Set an explicit fixity for
-<-
and->-
.
4.5
- Major changes to the API to support PolyKinds and DataKinds. This necessarily shuts off GHC <= 7.4.
- Orphan instances have moved upstream into a common
base-orphans
package.
4.3.1
- Added
asum1
toData.Semigroup.Foldable
.
4.3.0.1
- Support for 'ConstrainedClassMethods' is currently required for GHC HEAD.
4.3
- Added missing instances for
ExceptT
. Obtain it viatransformers-compat
if need be for oldtransformers
versions. - Several
Bind
andApply
instances now require somewhat more minimal contexts.
4.2
- Backported
Foldable
/Traversable
instances fromlens
4.1
Foldable1
/Traversable1
for tuples
4.0.4
contravariant
1.0 support.
4.0.3
- Added flags to provide unsupported cabal sandbox build modes.
4.0.1
- Fixed bitrot in the
Data.Functor.Extend
documentation. - Fixed warnings on GHC 7.8.1rc2 caused by importing
Control.Monad.Instances
.
4.0
- Merged in the contents of the
groupoids
andsemigroupoid-extras
packages.
3.1
- Added the rectangular band
Semigroupoid
for(,)
. Would that make it a Bandoid?
3.0.3
- Claim to be
Trustworthy
where necessary
3.0.2
- Tightened the upper bounds slightly to enable PVP compliance while retaining a flexible development cycle.
- Raised the upper bound on
contravariant
.
3.0.1
- Removed upper bounds relative to my other packages
- Refactored directory layout