File: random.cabal

package info (click to toggle)
haskell-random 1.2.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 296 kB
  • sloc: haskell: 2,696; makefile: 3
file content (217 lines) | stat: -rw-r--r-- 6,460 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
cabal-version:      >=1.10
name:               random
version:            1.2.1.2
license:            BSD3
license-file:       LICENSE
maintainer:         core-libraries-committee@haskell.org
bug-reports:        https://github.com/haskell/random/issues
synopsis:           Pseudo-random number generation
description:
    This package provides basic pseudo-random number generation, including the
    ability to split random number generators.
    .
    == "System.Random": pure pseudo-random number interface
    .
    In pure code, use 'System.Random.uniform' and 'System.Random.uniformR' from
    "System.Random" to generate pseudo-random numbers with a pure pseudo-random
    number generator like 'System.Random.StdGen'.
    .
    As an example, here is how you can simulate rolls of a six-sided die using
    'System.Random.uniformR':
    .
    >>> let roll = uniformR (1, 6)        :: RandomGen g => g -> (Word, g)
    >>> let rolls = unfoldr (Just . roll) :: RandomGen g => g -> [Word]
    >>> let pureGen = mkStdGen 42
    >>> take 10 (rolls pureGen)           :: [Word]
    [1,1,3,2,4,5,3,4,6,2]
    .
    See "System.Random" for more details.
    .
    == "System.Random.Stateful": monadic pseudo-random number interface
    .
    In monadic code, use 'System.Random.Stateful.uniformM' and
    'System.Random.Stateful.uniformRM' from "System.Random.Stateful" to generate
    pseudo-random numbers with a monadic pseudo-random number generator, or
    using a monadic adapter.
    .
    As an example, here is how you can simulate rolls of a six-sided die using
    'System.Random.Stateful.uniformRM':
    .
    >>> let rollM = uniformRM (1, 6)                 :: StatefulGen g m => g -> m Word
    >>> let pureGen = mkStdGen 42
    >>> runStateGen_ pureGen (replicateM 10 . rollM) :: [Word]
    [1,1,3,2,4,5,3,4,6,2]
    .
    The monadic adapter 'System.Random.Stateful.runStateGen_' is used here to lift
    the pure pseudo-random number generator @pureGen@ into the
    'System.Random.Stateful.StatefulGen' context.
    .
    The monadic interface can also be used with existing monadic pseudo-random
    number generators. In this example, we use the one provided in the
    <https://hackage.haskell.org/package/mwc-random mwc-random> package:
    .
    >>> import System.Random.MWC as MWC
    >>> let rollM = uniformRM (1, 6)       :: StatefulGen g m => g -> m Word
    >>> monadicGen <- MWC.create
    >>> replicateM 10 (rollM monadicGen) :: IO [Word]
    [2,3,6,6,4,4,3,1,5,4]
    .
    See "System.Random.Stateful" for more details.

category:           System
build-type:         Simple
extra-source-files:
    README.md
    CHANGELOG.md
tested-with:         GHC == 8.0.2
                   , GHC == 8.2.2
                   , GHC == 8.4.3
                   , GHC == 8.4.4
                   , GHC == 8.6.3
                   , GHC == 8.6.4
                   , GHC == 8.6.5
                   , GHC == 8.8.1
                   , GHC == 8.8.2
                   , GHC == 8.10.1

source-repository head
    type:     git
    location: https://github.com/haskell/random.git


library
    exposed-modules:
        System.Random
        System.Random.Internal
        System.Random.Stateful
    other-modules:
        System.Random.GFinite

    hs-source-dirs:   src
    default-language: Haskell2010
    ghc-options:
        -Wall
    if impl(ghc >= 8.0)
        ghc-options:
            -Wincomplete-record-updates -Wincomplete-uni-patterns

    build-depends:
        base >=4.8 && <5,
        bytestring >=0.10.4 && <0.13,
        deepseq >=1.1 && <2,
        mtl >=2.2 && <2.4,
        splitmix >=0.1 && <0.2
    if impl(ghc < 8.0)
       build-depends:
           transformers

test-suite legacy-test
    type:             exitcode-stdio-1.0
    main-is:          Legacy.hs
    hs-source-dirs:   test-legacy
    other-modules:
        T7936
        TestRandomIOs
        TestRandomRs
        Random1283
        RangeTest

    default-language: Haskell2010
    ghc-options:      -rtsopts -with-rtsopts=-M9M
    if impl(ghc >= 8.0)
        ghc-options:
            -Wno-deprecations
    build-depends:
        base,
        containers >=0.5 && <0.7,
        random

test-suite doctests
    type:             exitcode-stdio-1.0
    main-is:          doctests.hs
    hs-source-dirs:   test
    default-language: Haskell2010
    build-depends:
        base,
        doctest >=0.15 && <0.23
    if impl(ghc >= 8.2) && impl(ghc < 8.10)
        build-depends:
            mwc-random >=0.13 && <0.16,
            primitive >=0.6 && <0.8,
            random,
            stm,
            unliftio >=0.2 && <0.3,
            vector >= 0.10 && <0.14

test-suite spec
    type:             exitcode-stdio-1.0
    main-is:          Spec.hs
    hs-source-dirs:   test
    other-modules:
        Spec.Range
        Spec.Run
        Spec.Stateful

    default-language: Haskell2010
    ghc-options:      -Wall
    build-depends:
        base,
        bytestring,
        random,
        smallcheck >=1.2 && <1.3,
        stm,
        tasty >=1.0 && <1.6,
        tasty-smallcheck >=0.8 && <0.9,
        tasty-hunit >=0.10 && <0.11,
        transformers

-- Note. Fails when compiled with coverage:
-- https://github.com/haskell/random/issues/107
test-suite spec-inspection
    type:             exitcode-stdio-1.0
    main-is:          Spec.hs
    hs-source-dirs:   test-inspection
    default-language: Haskell2010
    ghc-options:      -Wall
    build-depends:
        base,
        random,
        tasty >=1.0 && <1.6
    if impl(ghc >= 8.0)
        build-depends:
            tasty-inspection-testing
        other-modules:
            Spec.Inspection

benchmark legacy-bench
    type:             exitcode-stdio-1.0
    main-is:          SimpleRNGBench.hs
    hs-source-dirs:   bench-legacy
    other-modules:    BinSearch
    default-language: Haskell2010
    ghc-options:
        -Wall -O2 -threaded -rtsopts -with-rtsopts=-N
    if impl(ghc >= 8.0)
        ghc-options:
            -Wno-deprecations

    build-depends:
        base,
        random,
        rdtsc,
        split >=0.2 && <0.3,
        time >=1.4 && <1.13

benchmark bench
    type:             exitcode-stdio-1.0
    main-is:          Main.hs
    hs-source-dirs:   bench
    default-language: Haskell2010
    ghc-options:      -Wall -O2
    build-depends:
        base,
        mtl,
        primitive >= 0.7.1,
        random,
        splitmix >=0.1 && <0.2,
        tasty-bench