packages feed

ac-library-hs-1.0.0.1: ac-library-hs.cabal

cabal-version:   3.4
name:            ac-library-hs

-- PVP summary:  +-+------- breaking API changes
--               | | +----- non-breaking API additions
--               | | | +--- code changes with no API change
version:         1.0.0.1
synopsis:        Data structures and algorithms
description:
  Haskell port of [ac-library](https://github.com/atcoder/ac-library), a library for competitive
  programming on [AtCoder](https://atcoder.jp/).

category:        Algorithms, Data Structures
license:         CC0-1.0
license-file:    LICENSE
author:          toyboot4e <toyboot4e@gmail.com>
maintainer:      toyboot4e <toyboot4e@gmail.com>
build-type:      Simple
extra-doc-files:
  CHANGELOG.md
  examples/README.md
  README.md

tested-with:     GHC ==9.8.4

source-repository head
  type:     git
  location: https://github.com/toyboot4e/ac-library-hs.git

common warnings
  ghc-options: -Wall

common dependencies
  -- AtCoder environment (2023 -)
  -- if impl(ghc ==9.4.5)
  --   build-depends:
  --     , base               ==4.17.1.0
  --     , bitvec             ^>=1.1.4.0
  --     , bytestring         ^>=0.11.4.0
  --     , primitive          ^>=0.8.0.0
  --     , vector             ^>=0.13.0.0
  --     , vector-algorithms  ^>=0.9.0.1
  --     , wide-word

  build-depends:
    , base               >=4.9     && <4.22
    , bitvec             <1.2
    , bytestring         <0.14
    , primitive          >=0.6.4.0 && <0.10
    , vector             >=0.13.0  && <0.14
    , vector-algorithms  <0.10
    , wide-word          <0.2

  default-language:   GHC2021

  -- compatible with GHC2024:
  default-extensions:
    DataKinds
    DerivingStrategies
    DisambiguateRecordFields
    ExplicitNamespaces
    GADTs
    LambdaCase
    MonoLocalBinds
    RoleAnnotations

library
  import:          warnings
  import:          dependencies
  exposed-modules:
    AtCoder.Convolution
    AtCoder.Dsu
    AtCoder.Extra.Math
    AtCoder.Extra.Monoid
    AtCoder.Extra.Monoid.Affine1
    AtCoder.Extra.Monoid.RangeAdd
    AtCoder.Extra.Monoid.RangeAddId
    AtCoder.Extra.Monoid.RangeSet
    AtCoder.Extra.Monoid.RangeSetId
    AtCoder.FenwickTree
    AtCoder.Internal.Assert
    AtCoder.Internal.Barrett
    AtCoder.Internal.Bit
    AtCoder.Internal.Buffer
    AtCoder.Internal.Convolution
    AtCoder.Internal.Csr
    AtCoder.Internal.GrowVec
    AtCoder.Internal.Math
    AtCoder.Internal.McfCsr
    AtCoder.Internal.MinHeap
    AtCoder.Internal.Queue
    AtCoder.Internal.Scc
    AtCoder.Internal.String
    AtCoder.LazySegTree
    AtCoder.Math
    AtCoder.MaxFlow
    AtCoder.MinCostFlow
    AtCoder.ModInt
    AtCoder.Scc
    AtCoder.SegTree
    AtCoder.String
    AtCoder.TwoSat

  -- other-modules:
  -- other-extensions:
  hs-source-dirs:  src

executable example-lazy-segtree
  import:         warnings
  import:         dependencies
  hs-source-dirs: examples
  main-is:        LazySegTree.hs
  build-depends:  ac-library-hs

test-suite ac-library-hs-test
  import:         warnings
  import:         dependencies
  other-modules:
    Tests.Convolution
    Tests.Dsu
    Tests.Extra.Math
    Tests.Extra.Monoid
    Tests.FenwickTree
    Tests.Internal.Bit
    Tests.Internal.Buffer
    Tests.Internal.GrowVec
    Tests.Internal.Math
    Tests.Internal.McfCsr
    Tests.Internal.MinHeap
    Tests.Internal.Queue
    Tests.LazySegTree
    Tests.LazySegTreeStress
    Tests.Math
    Tests.MaxFlow
    Tests.MinCostFlow
    Tests.ModInt
    Tests.Scc
    Tests.SegTree
    Tests.String
    Tests.TwoSat
    Tests.Util
    Util

  type:           exitcode-stdio-1.0
  hs-source-dirs: test
  main-is:        Main.hs
  build-depends:
    , ac-library-hs
    , hspec
    , mtl
    , QuickCheck
    , quickcheck-classes
    , random
    , tasty
    , tasty-hspec
    , tasty-hunit
    , tasty-quickcheck
    , tasty-rerun
    , transformers

benchmark ac-library-hs-benchmark
  import:         warnings
  import:         dependencies
  ghc-options:    -O2
  type:           exitcode-stdio-1.0
  main-is:        Main.hs
  hs-source-dirs: benchmarks
  other-modules:
    Bench.AddMod
    Bench.PowMod
    BenchLib.AddMod
    BenchLib.ModInt.ModIntNats
    BenchLib.ModInt.Modulus
    BenchLib.MulMod.Barrett64
    BenchLib.MulMod.BarrettWideWord
    BenchLib.MulMod.Montgomery
    BenchLib.PowMod

  build-depends:
    , ac-library-hs
    , base
    , criterion
    , random
    , tagged

test-suite benchlib-test
  import:         warnings
  import:         dependencies
  other-modules:
    BenchLib.AddMod
    BenchLib.ModInt.ModIntNats
    BenchLib.ModInt.Modulus
    BenchLib.MulMod.Barrett64
    BenchLib.MulMod.BarrettWideWord
    BenchLib.MulMod.Montgomery
    BenchLib.PowMod
    Tests.MulMod

  type:           exitcode-stdio-1.0
  hs-source-dirs: benchmarks
  main-is:        TestMain.hs
  build-depends:
    , ac-library-hs
    , hspec
    , mtl
    , QuickCheck
    , random
    , tagged
    , tasty
    , tasty-hunit
    , tasty-quickcheck
    , tasty-rerun