packages feed

singletons-base-3.1.1: singletons-base.cabal

name:           singletons-base
version:        3.1.1
cabal-version:  1.24
synopsis:       A promoted and singled version of the base library
homepage:       http://www.github.com/goldfirere/singletons
category:       Dependent Types
author:         Richard Eisenberg <rae@cs.brynmawr.edu>, Jan Stolarek <jan.stolarek@p.lodz.pl>
maintainer:     Ryan Scott <ryan.gl.scott@gmail.com>
bug-reports:    https://github.com/goldfirere/singletons/issues
stability:      experimental
tested-with:    GHC == 9.4.1
extra-source-files: README.md, CHANGES.md, tests/README.md,
                    tests/compile-and-dump/GradingClient/*.hs,
                    tests/compile-and-dump/InsertionSort/*.hs,
                    tests/compile-and-dump/Promote/*.hs,
                    tests/compile-and-dump/Singletons/*.hs
                    tests/compile-and-dump/GradingClient/*.golden,
                    tests/compile-and-dump/InsertionSort/*.golden,
                    tests/compile-and-dump/Promote/*.golden,
                    tests/compile-and-dump/Singletons/*.golden
license:        BSD3
license-file:   LICENSE
build-type:     Custom
description:
    @singletons-base@ uses @singletons-th@ to define promoted and singled
    functions from the @base@ library, including the "Prelude". This library was
    originally presented in /Dependently Typed Programming with Singletons/,
    published at the Haskell Symposium, 2012.
    (<https://richarde.dev/papers/2012/singletons/paper.pdf>)
    See also the paper published at Haskell Symposium, 2014, which describes
    how promotion works in greater detail:
    <https://richarde.dev/papers/2014/promotion/promotion.pdf>.
    .
    WARNING: @singletons-base@ defines orphan instances for @Sing@, @SingKind@,
    etc. for common types such as @Bool@, @[]@, @Maybe@, etc. If you define
    instances of these types in your code, you will likely not be able to use
    that code with @singletons-base@.
    .
    @singletons-base@ uses code that relies on bleeding-edge GHC language
    extensions. As such, @singletons-base@ only supports the latest major version
    of GHC (currently GHC 9.4). For more information,
    consult the @singletons@
    @<https://github.com/goldfirere/singletons/blob/master/README.md README>@.
    .
    You may also be interested in the following related libraries:
    .
    * The @singletons@ library is a small, foundational library that defines
      basic singleton-related types and definitions.
    .
    * The @singletons-th@ library defines Template Haskell functionality that
      allows /promotion/ of term-level functions to type-level equivalents and
      /singling/ functions to dependently typed equivalents.

source-repository this
  type:     git
  location: https://github.com/goldfirere/singletons.git
  subdir:   singletons-base
  tag:      v3.1.1

source-repository head
  type:     git
  location: https://github.com/goldfirere/singletons.git
  subdir:   singletons-base
  branch:   master

custom-setup
  setup-depends:
    base      >= 4.17 && < 4.18,
    Cabal     >= 3.0 && < 3.9,
    directory >= 1,
    filepath  >= 1.3

library
  hs-source-dirs:     src
  build-depends:      base             >= 4.17 && < 4.18,
                      pretty,
                      singletons       == 3.0.*,
                      singletons-th    == 3.1.*,
                      template-haskell >= 2.19 && < 2.20,
                      text >= 1.2,
                      th-desugar       >= 1.14 && < 1.15
  default-language:   GHC2021
  other-extensions:   TemplateHaskell
  exposed-modules:    Data.Singletons.Base.CustomStar
                      Data.Singletons.Base.Enum
                      Data.Singletons.Base.TH
                      Data.Singletons.Base.SomeSing
                      Data.Singletons.Base.TypeError
                      Data.Singletons.Base.TypeRepTYPE

                      Control.Applicative.Singletons
                      Control.Monad.Singletons
                      Control.Monad.Fail.Singletons
                      Control.Monad.Zip.Singletons
                      Data.Bool.Singletons
                      Data.Either.Singletons
                      Data.Eq.Singletons
                      Data.Foldable.Singletons
                      Data.Function.Singletons
                      Data.Functor.Compose.Singletons
                      Data.Functor.Const.Singletons
                      Data.Functor.Identity.Singletons
                      Data.Functor.Product.Singletons
                      Data.Functor.Singletons
                      Data.Functor.Sum.Singletons
                      Data.List.Singletons
                      Data.List.NonEmpty.Singletons
                      Data.Maybe.Singletons
                      Data.Monoid.Singletons
                      Data.Ord.Singletons
                      Data.Proxy.Singletons
                      Data.Semigroup.Singletons
                      Data.String.Singletons
                      Data.Traversable.Singletons
                      Data.Tuple.Singletons
                      Data.Void.Singletons
                      GHC.TypeLits.Singletons
                      Prelude.Singletons
                      Text.Show.Singletons

  other-modules:      Data.Singletons.Base.Instances
                      Data.Singletons.Base.Util

                      Control.Monad.Singletons.Internal
                      Data.List.Singletons.Internal
                      Data.List.Singletons.Internal.Disambiguation
                      Data.Ord.Singletons.Disambiguation
                      Data.Semigroup.Singletons.Internal
                      Data.Semigroup.Singletons.Internal.Disambiguation
                      GHC.Base.Singletons
                      GHC.Num.Singletons
                      GHC.TypeLits.Singletons.Internal

  -- singletons re-exports
  reexported-modules: Data.Singletons
                    , Data.Singletons.Decide
                    , Data.Singletons.ShowSing
                    , Data.Singletons.Sigma

  -- singletons-th re-exports
  reexported-modules: Data.Singletons.TH
                    , Data.Singletons.TH.CustomStar
                    , Data.Singletons.TH.Options
                    , Data.Singletons.TH.SuppressUnusedWarnings

  ghc-options:        -Wall -Wcompat -Wno-redundant-constraints

test-suite singletons-base-test-suite
  type:               exitcode-stdio-1.0
  hs-source-dirs:     tests
  ghc-options:        -Wall -Wcompat -threaded -with-rtsopts=-maxN16
  default-language:   GHC2021
  main-is:            SingletonsBaseTestSuite.hs
  other-modules:      SingletonsBaseTestSuiteUtils

  build-depends:      base >= 4.17 && < 4.18,
                      bytestring >= 0.10.9,
                      deepseq >= 1.4.4,
                      filepath >= 1.3,
                      process >= 1.1,
                      turtle >= 1.5,
                      text >= 1.2,
                      singletons-base,
                      tasty >= 1.2,
                      tasty-golden >= 2.2