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

Version on this page:0.7.5
LTS Haskell 20.16:0.7.5@rev:1
Stackage Nightly 2023-03-28:0.7.5@rev:1
Latest on Hackage:0.7.5@rev:1

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:280f14b4f599536d19f64afbf5ff5bd57b1ac1d9255013952d22404537bb023c,1214

Module documentation for 0.7.5

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