generic-random: Generic random generators

[ generics, library, mit, testing ] [ Propose Tags ]

Please see the README.


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
boltzmann

Dependency on boltzmann-samplers for backwards compatibility.

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.1.0, 0.2.0.0, 0.3.0.0, 0.4.0.0, 0.4.1.0, 0.5.0.0, 1.0.0.0, 1.1.0.0, 1.1.0.1, 1.1.0.2, 1.2.0.0, 1.3.0.0, 1.3.0.1, 1.4.0.0, 1.5.0.0, 1.5.0.1
Change log CHANGELOG.md
Dependencies base (>=4.9 && <4.10), boltzmann-samplers (<=0.2), QuickCheck [details]
License MIT
Author Li-yao Xia
Maintainer lysxia@gmail.com
Category Generics, Testing
Home page http://github.com/lysxia/generic-random
Source repo head: git clone https://github.com/lysxia/generic-random
Uploaded by lyxia at 2017-03-05T20:31:08Z
Distributions Arch:1.5.0.1, Debian:1.3.0.1, LTSHaskell:1.5.0.1, NixOS:1.5.0.1, Stackage:1.5.0.1
Reverse Dependencies 8 direct, 2 indirect [details]
Downloads 27907 total (148 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-03-05 [all 1 reports]

Readme for generic-random-0.4.1.0

[back to package description]

Generic random generators Hackage Build Status

Say goodbye to Constructor <$> arbitrary <*> arbitrary <*> arbitrary-boilerplate.

    {-# LANGUAGE DeriveGeneric #-}

    import GHC.Generics ( Generic )
    import Test.QuickCheck
    import Generic.Random.Generic

    data Tree a = Leaf | Node (Tree a) a (Tree a)
      deriving (Show, Generic)

    instance Arbitrary a => Arbitrary (Tree a) where
      arbitrary = genericArbitrary' Z uniform

    -- Equivalent to
    -- > arbitrary =
    -- >   sized $ \n ->
    -- >     if n == 0 then
    -- >       return Leaf
    -- >     else
    -- >       oneof
    -- >         [ return Leaf
    -- >         , Node <$> arbitrary <*> arbitrary <*> arbitrary
    -- >         ]

    main = sample (arbitrary :: Gen (Tree ()))
  • User-specified distribution of constructors, with a compile-time check that weights have been specified for all constructors.
  • A simple (optional) strategy to ensure termination: Test.QuickCheck.Gen's size parameter decreases at every recursive genericArbitrary' call; when it reaches zero, sample directly from a finite set of finite values.