cabal-version:      >=1.10
name:               semialign
version:            1.1
synopsis:
  Align and Zip type-classes from the common Semialign ancestor.

homepage:           https://github.com/isomorphism/these
license:            BSD3
license-file:       LICENSE
author:             C. McCann, Oleg Grenrus
maintainer:         Oleg Grenrus <oleg.grenrus@iki.fi>
category:           Data, These
build-type:         Simple
extra-source-files: CHANGELOG.md
description:
  The major use of @These@ of this is provided by the @align@ member of
  @Semialign@ class, representing a generalized notion of "zipping with padding"
  that combines structures without truncating to the size of the smaller input.
  .
  It turns out that @zip@ operation fits well the @Semialign@ class,
  forming lattice-like structure.

tested-with:
    GHC ==7.4.2
     || ==7.6.3
     || ==7.8.4
     || ==7.10.3
     || ==8.0.2
     || ==8.2.2
     || ==8.4.4
     || ==8.6.5
     || ==8.8.1
  , GHCJS ==8.4

source-repository head
  type:     git
  location: https://github.com/isomorphism/these.git

flag semigroupoids
  description: Build with semigroupoids dependency
  manual:      True
  default:     True

library
  default-language: Haskell2010
  ghc-options:      -Wall

  if impl(ghc >=8.0)
    ghc-options: -Wno-trustworthy-safe

  hs-source-dirs:   src
  exposed-modules:
    Data.Align
    Data.Crosswalk
    Data.Semialign
    Data.Zip

  other-modules:    Data.Semialign.Internal

  -- ghc boot libs
  build-depends:
      base          >=4.5.1.0 && <4.14
    , containers    >=0.4.2.1 && <0.7
    , transformers  >=0.3.0.0 && <0.6

  -- These
  build-depends:    these >=1 && <1.1

  -- other dependencies
  build-depends:
      base-compat           >=0.10.5   && <0.12
    , hashable              >=1.2.7.0  && <1.4
    , tagged                >=0.8.6    && <0.9
    , unordered-containers  >=0.2.8.0  && <0.3
    , vector                >=0.12.0.2 && <0.13

  -- base shims
  if !impl(ghc >=8.2)
    build-depends: bifunctors >=5.5.4 && <5.6

  if !impl(ghc >=8.0)
    build-depends:
        semigroups           >=0.18.5  && <0.20
      , transformers         >=0.3.0.0 && <0.6
      , transformers-compat  >=0.6.5   && <0.7

    -- Ensure Data.Functor.Classes is always available
    if impl(ghc >=7.10)
      build-depends: transformers >=0.4.2.0

  if impl(ghc <7.5)
    build-depends: ghc-prim

  if flag(semigroupoids)
    build-depends: semigroupoids >=5.3.2 && <5.4