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

Version on this page:0.7.5@rev:2
LTS Haskell 22.29:0.7.6
Stackage Nightly 2024-07-20:0.7.6
Latest on Hackage:0.7.6

See all snapshots these-skinny appears in

BSD-3-Clause licensed by C. McCann
Maintained by chessai
This version can be pinned in stack with:these-skinny-0.7.5@sha256:24b503bd45439ad304d6106ca9725c95516a6460c5ee131814ffffb602b91995,1290

Module documentation for 0.7.5

Depends on 3 packages(full list with versions):
Used by 1 package in lts-22.17(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