dualizer-0.2.0.0: dualizer.cabal
cabal-version: 3.0
name: dualizer
version: 0.2.0.0
synopsis: Automatically generate dual constructions
description: A library for defining duals automatically, as well as labeling duals in existing packages.
author: Greg Pfeil <greg@technomadic.org>
maintainer: Greg Pfeil <greg@technomadic.org>
copyright: 2017-2024 Greg Pfeil
homepage: https://github.com/sellout/dualizer#readme
bug-reports: https://github.com/sellout/dualizer/issues
category: Categories
build-type: Custom
license: AGPL-3.0-or-later
license-files:
LICENSE
extra-doc-files:
CHANGELOG.md
README.md
docs/*.md
tested-with:
GHC == {
8.10.1, 8.10.7,
9.0.1, 9.0.2,
9.2.1, 9.2.5,
9.4.1, 9.4.5,
9.6.1, 9.6.3, 9.6.6,
9.8.1,
9.10.1
}
source-repository head
type: git
location: https://github.com/sellout/dualizer
-- This mimics the GHC2024 extension
-- (https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/control.html?highlight=doandifthenelse#extension-GHC2024),
-- but supporting compilers back to GHC 7.10. If the oldest supported compiler
-- is GHC 9.10, then this stanza can be removed and `import: GHC2024` can be
-- replaced by `default-language: GHC2024`. If the oldest supported compiler is
-- GHC 9.2, then this can be simplified by setting `default-language: GHC2021`
-- and only including the extensions added by GHC2024.
common GHC2024
default-language: Haskell2010
default-extensions:
BangPatterns
BinaryLiterals
ConstraintKinds
DataKinds
DeriveDataTypeable
DeriveGeneric
DeriveLift
DeriveTraversable
DerivingStrategies
DisambiguateRecordFields
DoAndIfThenElse
EmptyCase
ExistentialQuantification
FlexibleContexts
FlexibleInstances
GADTs
GeneralizedNewtypeDeriving
HexFloatLiterals
ImportQualifiedPost
InstanceSigs
LambdaCase
MagicHash
MonadComprehensions
MonomorphismRestriction
MultiParamTypeClasses
NamedFieldPuns
NamedWildCards
NumericUnderscores
PolyKinds
PostfixOperators
RankNTypes
RoleAnnotations
ScopedTypeVariables
StandaloneDeriving
StandaloneKindSignatures
TupleSections
TypeApplications
TypeOperators
UnicodeSyntax
flag noisy-deprecations
description:
Prior to GHC 9.10, the `DEPRECATED` pragma can’t distinguish between terms
and types. Consenquently, you can get spurious warnings when there’s a name
collision and the name in the other namespace is deprecated. Or you can
choose to not get those warnings, at the risk of not being warned when
there’s a name collision and the namespace you’re referencing is the one
that’s deprecated.
common defaults
import: GHC2024
build-depends:
base ^>= {4.14.0, 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.19.0, 4.20.0},
ghc-options:
-Weverything
-- This one just reports unfixable things, AFAICT.
-Wno-all-missed-specialisations
-- Type inference good.
-Wno-missing-local-signatures
-- Warns even when `Unsafe` is explicit, not inferred. See
-- https://gitlab.haskell.org/ghc/ghc/-/issues/16689
-Wno-unsafe
-- remove if the oldest supported version is GHC 9.2.1+
if impl(ghc >= 9.2.1)
ghc-options:
-Wno-missing-kind-signatures
if impl(ghc >= 9.8.1)
ghc-options:
-- remove if the oldest supported version is GHC 9.2.1+
-Wno-missing-poly-kind-signatures
-- Inference good.
-Wno-missing-role-annotations
default-extensions:
BlockArguments
DefaultSignatures
ExplicitNamespaces
FunctionalDependencies
LiberalTypeSynonyms
-- replace with `LexicalNegation` if the oldest supported version is GHC 9.0.1+
NegativeLiterals
PackageImports
ParallelListComp
-- QualifiedDo - uncomment if the oldest supported version is GHC 9.0.1+
RecursiveDo
-- RequiredTypeArguments - uncomment if the oldest supported version is GHC 9.10.1+
StrictData
TemplateHaskellQuotes
TransformListComp
NoGeneralizedNewtypeDeriving
NoImplicitPrelude
NoMonomorphismRestriction
NoPatternGuards
NoStarIsType
NoTypeApplications
if flag(noisy-deprecations)
cpp-options: -DSELLOUT_NOISY_DEPRECATIONS
custom-setup
setup-depends:
-- TODO: Remove `Cabal` dep once haskell/cabal#3751 is fixed.
Cabal ^>= {3.0.0, 3.2.0, 3.4.0, 3.6.0, 3.8.0, 3.10.0, 3.12.0},
base ^>= {4.8.2, 4.9.0, 4.10.0, 4.11.0, 4.12.0, 4.13.0, 4.14.0, 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.19.0, 4.20.0},
cabal-doctest ^>= {1.0.0},
library
import: defaults
hs-source-dirs: src
build-depends:
containers ^>= {0.6.2, 0.7},
lens ^>= {4.19, 5, 5.1, 5.2, 5.3},
template-haskell ^>= {2.16.0, 2.17.0, 2.18.0, 2.19.0, 2.20.0, 2.21.0, 2.22.0},
transformers ^>= {0.5.6, 0.6.1},
exposed-modules:
Categorical.Dual
Categorical.Dual.Base
Categorical.Dual.Example
Categorical.Dual.Lens
Categorical.Dual.Prelude
test-suite doctests
import: defaults
type: exitcode-stdio-1.0
hs-source-dirs: tests
main-is: doctests.hs
build-depends:
doctest ^>= {0.16.3, 0.18.1, 0.20.1, 0.21.1, 0.22.2},
dualizer,
-- TODO: The sections below here are necessary because we don’t have control
-- over the generated `Build_doctests.hs` file. So we have to silence
-- all of its warnings one way or another.
ghc-options:
-Wno-missing-deriving-strategies
-Wno-missing-export-lists
-Wno-missing-import-lists
-Wno-safe
-- `doctest` requires the package containing the doctests as a dependency
-- to ensure it gets built before this test-suite, even though the package
-- appears to be unused.
-Wno-unused-packages
default-extensions:
-- Since we can’t add `{-# LANGUAGE Safe -#}` to the generated
-- “Build_doctests.hs”, we set it here, and that means it has to match
-- doctests.hs, which is `Unsafe`.
Unsafe