File: recursion-schemes.cabal

package info (click to toggle)
haskell-recursion-schemes 5.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 172 kB
  • sloc: haskell: 903; makefile: 4
file content (88 lines) | stat: -rw-r--r-- 3,003 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
name:          recursion-schemes
category:      Control, Recursion
version:       5.2.3
license:       BSD2
cabal-version: 1.18
license-file:  LICENSE
author:        Edward A. Kmett
maintainer:    "Samuel Gélineau" <gelisam@gmail.com>,
               "Ryan Scott" <ryan.gl.scott@gmail.com>,
               "Luc Tielen" <luc.tielen@gmail.com>
stability:     provisional
homepage:      http://github.com/ekmett/recursion-schemes/
bug-reports:   http://github.com/ekmett/recursion-schemes/issues
copyright:     Copyright (C) 2008-2015 Edward A. Kmett
synopsis:      Representing common recursion patterns as higher-order functions
description:   Many recursive functions share the same structure, e.g. pattern-match on the input and, depending on the data constructor, either recur on a smaller input or terminate the recursion with the base case. Another one: start with a seed value, use it to produce the first element of an infinite list, and recur on a modified seed in order to produce the rest of the list. Such a structure is called a recursion scheme. Using higher-order functions to implement those recursion schemes makes your code clearer, faster, and safer. See README for details.

tested-with:   GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.4, GHC==8.10.7, GHC==9.0.2, GHC==9.2.8, GHC==9.4.8, GHC==9.6.5, GHC==9.8.2, GHC==9.10.1

build-type:    Simple
extra-doc-files: docs/github-compression.png docs/flowchart.svg
extra-source-files: CHANGELOG.markdown .gitignore README.markdown

source-repository head
  type: git
  location: git://github.com/ekmett/recursion-schemes.git

flag template-haskell
  description: About Template Haskell derivations
  manual: True
  default: True

library
  other-extensions:
    CPP
    TypeFamilies
    Rank2Types
    FlexibleContexts
    FlexibleInstances
    GADTs
    StandaloneDeriving
    UndecidableInstances

  hs-source-dirs: src

  build-depends:
    base                 >= 4.9     && < 5,
    containers           >= 0.4.2.1 && < 0.8,
    comonad              >= 4       && < 6,
    data-fix             >= 0.3.0   && < 0.4,
    free                 >= 4       && < 6,
    transformers         >= 0.4.2.0 && < 1

  if !impl(ghc >= 8.2)
    build-depends: bifunctors >= 4 && < 6

  -- Foldable module is first, so cabal repl loads it!
  exposed-modules:
    Data.Functor.Foldable
    Data.Functor.Base

  if flag(template-haskell)
    build-depends:
      template-haskell >= 2.11.0.0 && < 2.23,
      th-abstraction   >= 0.4      && < 0.8
    exposed-modules:
      Data.Functor.Foldable.TH

    other-modules:
      Paths_recursion_schemes

  ghc-options: -Wall
  if impl(ghc >= 8.6)
    ghc-options: -Wno-star-is-type
  default-language: Haskell2010

test-suite Expr
  type: exitcode-stdio-1.0
  main-is: Expr.hs
  hs-source-dirs: examples
  ghc-options: -Wall -threaded
  default-language: Haskell2010
  build-depends:
    base,
    HUnit <1.7,
    recursion-schemes,
    template-haskell,
    transformers     >= 0.2     && < 1