cabal-version: 1.12

-- This file has been generated from package.yaml by hpack version 0.34.4.
--
-- see: https://github.com/sol/hpack

name:           cleff
version:        0.3.4.0
synopsis:       Fast and concise extensible effects
description:    @cleff@ is an effect system for building modular, well-abstracted and performant programs. It provides:
                .
                - Blazing-fast speed in the majority of use cases (<#benchmarks Benchmarks>)
                - Well-built integration with the existing Haskell ecosystem (@unliftio@, @monad-control@, @exceptions@...)
                - Predictable behavior under expections and concurrency that does not stab you in the back
                - Flexible and expressive API for power users, with first-class support of scoped effects
                .
                You can use @cleff@ out of the box, with little to no boilerplate. To get started, use the module "Cleff" as a
                starting point.
category:       Control, Effect, Language
homepage:       https://github.com/re-xyr/cleff#readme
bug-reports:    https://github.com/re-xyr/cleff/issues
author:         Xy Ren
maintainer:     xy.r@outlook.com
copyright:      2021 Xy Ren
license:        BSD3
license-file:   LICENSE
build-type:     Simple
tested-with:
    GHC == 8.6.5
  , GHC == 8.8.4
  , GHC == 8.10.7
  , GHC == 9.0.2
  , GHC == 9.2.2
extra-source-files:
    CHANGELOG.md
    README.md

source-repository head
  type: git
  location: https://github.com/re-xyr/cleff

flag dynamic-ioe
  description: Make @IOE@ a real effect. This is only for reference purposes and should not be enabled in production code.

  manual: True
  default: False

library
  exposed-modules:
      Cleff
      Cleff.Error
      Cleff.Fail
      Cleff.Fresh
      Cleff.Input
      Cleff.Internal.Base
      Cleff.Internal.Env
      Cleff.Internal.Interpret
      Cleff.Internal.Monad
      Cleff.Internal.Stack
      Cleff.Internal.TH
      Cleff.Mask
      Cleff.Output
      Cleff.Reader
      Cleff.State
      Cleff.Trace
      Cleff.Writer
  other-modules:
      Data.Any
      Data.PrimVec
      Data.RadixVec
      Data.ThreadVar
  hs-source-dirs:
      src
  default-extensions:
      BangPatterns
      BlockArguments
      ConstraintKinds
      DataKinds
      DeriveAnyClass
      DerivingStrategies
      DerivingVia
      EmptyCase
      FlexibleContexts
      FlexibleInstances
      FunctionalDependencies
      GADTs
      GeneralizedNewtypeDeriving
      LambdaCase
      MagicHash
      NoStarIsType
      PatternSynonyms
      PolyKinds
      RankNTypes
      RoleAnnotations
      ScopedTypeVariables
      StandaloneDeriving
      TemplateHaskell
      TupleSections
      TypeApplications
      TypeFamilies
      TypeOperators
      UndecidableInstances
      UnicodeSyntax
      UnliftedFFITypes
      ViewPatterns
  ghc-options: -Wall -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wno-unticked-promoted-constructors -Wpartial-fields -Wunused-type-patterns -Wmissing-export-lists
  build-depends:
      atomic-primops ==0.8.*
    , base >=4.12 && <4.17
    , containers >=0.5 && <0.7
    , exceptions ==0.10.*
    , microlens >=0.1 && <0.5
    , monad-control >=1 && <1.1
    , primitive >=0.6.4 && <0.8
    , stm ==2.5.*
    , template-haskell >=2.14 && <2.19
    , th-abstraction >=0.2 && <0.5
    , transformers-base ==0.4.*
    , unliftio-core >=0.1.1 && <0.3
  if flag(dynamic-ioe)
    cpp-options: -DDYNAMIC_IOE
  if impl(ghc >= 8.8)
    ghc-options: -Wmissing-deriving-strategies
  default-language: Haskell2010

test-suite cleff-example
  type: exitcode-stdio-1.0
  main-is: Main.hs
  other-modules:
      Broker
      Filesystem
      Teletype
      Paths_cleff
  hs-source-dirs:
      example
  default-extensions:
      BangPatterns
      BlockArguments
      ConstraintKinds
      DataKinds
      DeriveAnyClass
      DerivingStrategies
      DerivingVia
      EmptyCase
      FlexibleContexts
      FlexibleInstances
      FunctionalDependencies
      GADTs
      GeneralizedNewtypeDeriving
      LambdaCase
      MagicHash
      NoStarIsType
      PatternSynonyms
      PolyKinds
      RankNTypes
      RoleAnnotations
      ScopedTypeVariables
      StandaloneDeriving
      TemplateHaskell
      TupleSections
      TypeApplications
      TypeFamilies
      TypeOperators
      UndecidableInstances
      UnicodeSyntax
      UnliftedFFITypes
      ViewPatterns
  ghc-options: -Wall -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wno-unticked-promoted-constructors -Wpartial-fields -Wunused-type-patterns -threaded -rtsopts -with-rtsopts=-N
  build-depends:
      atomic-primops ==0.8.*
    , base >=4.12 && <4.17
    , cleff
    , containers >=0.5 && <0.7
    , exceptions ==0.10.*
    , extra
    , microlens >=0.1 && <0.5
    , monad-control >=1 && <1.1
    , primitive >=0.6.4 && <0.8
    , stm ==2.5.*
    , template-haskell >=2.14 && <2.19
    , th-abstraction >=0.2 && <0.5
    , transformers-base ==0.4.*
    , unliftio-core >=0.1.1 && <0.3
  if flag(dynamic-ioe)
    cpp-options: -DDYNAMIC_IOE
  if impl(ghc >= 8.8)
    ghc-options: -Wmissing-deriving-strategies
  default-language: Haskell2010

test-suite cleff-test
  type: exitcode-stdio-1.0
  main-is: Main.hs
  other-modules:
      ConcurrencySpec
      ErrorSpec
      HigherOrderSpec
      InterposeSpec
      MaskSpec
      StateSpec
      ThSpec
      Paths_cleff
  hs-source-dirs:
      test
  default-extensions:
      BangPatterns
      BlockArguments
      ConstraintKinds
      DataKinds
      DeriveAnyClass
      DerivingStrategies
      DerivingVia
      EmptyCase
      FlexibleContexts
      FlexibleInstances
      FunctionalDependencies
      GADTs
      GeneralizedNewtypeDeriving
      LambdaCase
      MagicHash
      NoStarIsType
      PatternSynonyms
      PolyKinds
      RankNTypes
      RoleAnnotations
      ScopedTypeVariables
      StandaloneDeriving
      TemplateHaskell
      TupleSections
      TypeApplications
      TypeFamilies
      TypeOperators
      UndecidableInstances
      UnicodeSyntax
      UnliftedFFITypes
      ViewPatterns
  ghc-options: -Wall -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wno-unticked-promoted-constructors -Wpartial-fields -Wunused-type-patterns -threaded -rtsopts -with-rtsopts=-N
  build-depends:
      atomic-primops ==0.8.*
    , base >=4.12 && <4.17
    , cleff
    , containers >=0.5 && <0.7
    , exceptions ==0.10.*
    , extra
    , hspec
    , lifted-base
    , microlens >=0.1 && <0.5
    , monad-control >=1 && <1.1
    , primitive >=0.6.4 && <0.8
    , stm ==2.5.*
    , template-haskell >=2.14 && <2.19
    , th-abstraction >=0.2 && <0.5
    , transformers-base ==0.4.*
    , unliftio-core >=0.1.1 && <0.3
  if flag(dynamic-ioe)
    cpp-options: -DDYNAMIC_IOE
  if impl(ghc >= 8.8)
    ghc-options: -Wmissing-deriving-strategies
  default-language: Haskell2010