mirror of
https://github.com/polysemy-research/polysemy.git
synced 2024-12-02 11:54:06 +03:00
4cce80c043
This PR adds machinery for writing easy laws that should hold for an effect. It gives an example of what they'd look like for State s.
133 lines
3.1 KiB
YAML
133 lines
3.1 KiB
YAML
name: polysemy
|
|
version: 1.2.3.0
|
|
github: "isovector/polysemy"
|
|
license: BSD3
|
|
author: "Sandy Maguire"
|
|
maintainer: "sandy@sandymaguire.me"
|
|
copyright: "2019 Sandy Maguire"
|
|
build-type: Custom
|
|
|
|
extra-source-files:
|
|
- README.md
|
|
- ChangeLog.md
|
|
|
|
synopsis: Higher-order, low-boilerplate, zero-cost free monads.
|
|
category: Language
|
|
|
|
description: Please see the README on GitHub at <https://github.com/isovector/polysemy#readme>
|
|
|
|
dependencies:
|
|
- base >= 4.9 && < 5
|
|
- containers >= 0.5 && < 0.7
|
|
- mtl >= 2.2.2 && < 3
|
|
- syb >= 0.7 && < 0.8
|
|
- stm >= 2 && < 3
|
|
- template-haskell >= 2.12.0.0 && < 3
|
|
- th-abstraction >= 0.3.1.0 && < 0.4
|
|
- transformers >= 0.5.2.0 && < 0.6
|
|
- first-class-families >= 0.5.0.0 && < 0.7
|
|
- unagi-chan >= 0.4.0.0 && < 0.5
|
|
- async >= 2.2 && < 3
|
|
- type-errors >= 0.2.0.0
|
|
- type-errors-pretty >= 0.0.0.0 && < 0.1
|
|
- QuickCheck >= 2.11.3 && < 3
|
|
|
|
custom-setup:
|
|
dependencies:
|
|
- base >= 4.9 && < 5
|
|
- Cabal
|
|
- cabal-doctest >=1.0.6 && <1.1
|
|
|
|
default-extensions:
|
|
- DataKinds
|
|
- DeriveFunctor
|
|
- FlexibleContexts
|
|
- GADTs
|
|
- LambdaCase
|
|
- PolyKinds
|
|
- RankNTypes
|
|
- ScopedTypeVariables
|
|
- StandaloneDeriving
|
|
- TypeApplications
|
|
- TypeOperators
|
|
- TypeFamilies
|
|
- UnicodeSyntax
|
|
|
|
when:
|
|
- condition: impl(ghc < 8.6)
|
|
default-extensions:
|
|
- MonadFailDesugaring
|
|
- TypeInType
|
|
|
|
- condition: impl(ghc >= 8.7)
|
|
dependencies:
|
|
- loopbreaker >= 0.1 && < 0.2
|
|
|
|
flags:
|
|
dump-core:
|
|
description: Dump HTML for the core generated by GHC during compilation
|
|
default: False
|
|
manual: True
|
|
error-messages:
|
|
description: Provide custom error messages
|
|
default: True
|
|
manual: True
|
|
|
|
library:
|
|
ghc-options: -Wall
|
|
source-dirs: src
|
|
other-modules: Polysemy.Internal.PluginLookup
|
|
|
|
when:
|
|
- condition: flag(dump-core)
|
|
dependencies:
|
|
- dump-core
|
|
ghc-options:
|
|
- -fplugin=DumpCore
|
|
- -fplugin-opt=DumpCore:core-html
|
|
|
|
- condition: impl(ghc < 8.2.2)
|
|
dependencies:
|
|
- unsupported-ghc-version > 1 && < 1
|
|
|
|
# We use this plugin to get to more agressive inlining without need for
|
|
# explicit "loopbreakers" in function definitions all over ther codebase
|
|
# --- sadly it can only work on newer versions of GHC currently
|
|
- condition: impl(ghc >= 8.7)
|
|
ghc-options:
|
|
- -fplugin=Loopbreaker
|
|
|
|
- condition: flag(error-messages)
|
|
then:
|
|
# dummy value because cabal is stupid
|
|
cpp-options: -DCABAL_SERIOUSLY_CMON_MATE
|
|
else:
|
|
cpp-options: -DNO_ERROR_MESSAGES
|
|
|
|
tests:
|
|
polysemy-test:
|
|
main: Main.hs
|
|
source-dirs: test
|
|
ghc-options:
|
|
- -threaded
|
|
- -rtsopts
|
|
- -with-rtsopts=-N
|
|
build-tools:
|
|
- hspec-discover >= 2.0
|
|
dependencies:
|
|
- polysemy
|
|
- inspection-testing >= 0.4.2 && < 0.5
|
|
- hspec >= 2.6.0 && < 3
|
|
- doctest >= 0.16.0.1 && < 0.17
|
|
|
|
benchmarks:
|
|
polysemy-bench:
|
|
source-dirs: bench
|
|
main: countDown.hs
|
|
dependencies:
|
|
- criterion
|
|
- free
|
|
- freer-simple
|
|
- mtl
|
|
- polysemy
|