diff options
author | John Soo <jsoo1@asu.edu> | 2020-04-10 21:09:02 -0700 |
---|---|---|
committer | Leo Famulari <leo@famulari.name> | 2020-05-29 10:44:30 -0400 |
commit | 89e9082e4e90c9e593ed8584ff6978ecf91dfe24 (patch) | |
tree | ce7be2b057c0661e800c24a4fc23b2bddbdde871 /gnu | |
parent | 2b2c8911c6357312ca577c20dbe6fc58ffa98aa5 (diff) | |
download | guix-patches-89e9082e4e90c9e593ed8584ff6978ecf91dfe24.tar guix-patches-89e9082e4e90c9e593ed8584ff6978ecf91dfe24.tar.gz |
gnu: Add ghc-generic-random.
* gnu/packages/haskell-xyz.scm (ghc-generic-random): New variable.
Signed-off-by: Leo Famulari <leo@famulari.name>
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/haskell-xyz.scm | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm index fb26de2669..d828501593 100644 --- a/gnu/packages/haskell-xyz.scm +++ b/gnu/packages/haskell-xyz.scm @@ -4481,6 +4481,46 @@ specific Windows, Mac, and Linux file system event notification.") deriving mechanism in Haskell to arbitrary classes.") (license license:bsd-3))) +(define-public ghc-generic-random + (package + (name "ghc-generic-random") + (version "1.2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/generic-random/" + "generic-random-" version ".tar.gz")) + (sha256 + (base32 "130lmblycxnpqbsl7vf6a90zccibnvcb5zaclfajcn3by39007lv")))) + (build-system haskell-build-system) + (inputs `(("ghc-quickcheck" ,ghc-quickcheck))) + (native-inputs + `(("ghc-inspection-testing" ,ghc-inspection-testing))) + (arguments + `(#:cabal-revision + ("1" "1d0hx41r7yq2a86ydnfh2fv540ah8cz05l071s2z4wxcjw0ymyn4"))) + (home-page + "https://github.com/lysxia/generic-random") + (synopsis + "Generic random generators for QuickCheck") + (description + "Derive instances of @code{Arbitrary} for QuickCheck, with various options +to customize implementations. + +Automating the arbitrary boilerplate also ensures that when a type changes to +have more or fewer constructors, then the generator either fixes itself to +generate that new case (when using the uniform distribution) or causes a +compilation error so you remember to fix it (when using an explicit +distribution). + +This package also offers a simple (optional) strategy to ensure termination +for recursive types: make @code{Test.QuickCheck.Gen}'s size parameter decrease +at every recursive call; when it reaches zero, sample directly from a +trivially terminating generator given explicitly (@code{genericArbitraryRec} +and @code{withBaseCase}) or implicitly (@code{genericArbitrary'}).") + (license license:expat))) + (define-public ghc-generics-sop (package (name "ghc-generics-sop") |