A fork of the 'these' package without the dependency bloat.

Version on this page:0.7.4@rev:2
LTS Haskell 22.17:0.7.5@rev:2
Stackage Nightly 2023-12-26:0.7.5@rev:2
Latest on Hackage:0.7.5@rev:2

See all snapshots these-skinny appears in

BSD-3-Clause licensed by C. McCann
Maintained by [email protected]
This version can be pinned in stack with:these-skinny-0.7.4@sha256:e29336a1a70a497e09d8266f8438efb30a807bafaa6b00f5a136f7493efb3160,1239

Module documentation for 0.7.4

Depends on 2 packages(full list with versions):
Used by 1 package in lts-17.2(full list with versions):

This package provides a data type These a b which can hold a value of either type or values of each type. This is usually thought of as an "inclusive or" type (contrasting Either a b as "exclusive or") or as an "outer join" type (contrasting (a, b) as "inner join").



  • QuickCheck-2.10 support: Arbitrary1/2 instances
  • GHC-8.2 support


  • Add salign :: (Align f, Semigroup a) => f a -> f a -> f a


  • Support aeson-1: add FromJSON1, FromJSON2 ToJSON1, and ToJSON2 These instances.


  • Add AlignWithKey in Data.Align.Key (added dependency keys)
  • Add These instances for
    • binary: Binary
    • aeson: FromJSON, ToJSON
    • QuickCheck: Arbitrary, CoArbitrary, Function
    • deepseq: NFData


  • Breaking change: Generalized Monad, Applicative instances of These and Chronicle to require only a Semigroup constraint
  • More efficient Align Seq implementation
  • Add Crosswalk Seq and Vector instances

  • Support quickcheck-instances-0.3.12 (tests)

  • Add support to bifunctors-5.1