summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Soo <jsoo1@asu.edu>2020-04-10 21:04:11 -0700
committerLeo Famulari <leo@famulari.name>2020-05-29 10:44:29 -0400
commit29e1553344864db55de6af225b16ac74d84a078a (patch)
treebd2943e1f6b98f276cc21724cb97b06f609d1af9
parent1ca44ae34cb4324427f232035b00c11dfa712139 (diff)
downloadguix-29e1553344864db55de6af225b16ac74d84a078a.tar.gz
gnu: Add ghc-inspection-testing.
* gnu/packages/haskell-check.scm (ghc-inspection-testing): New variable.

Signed-off-by: Leo Famulari <leo@famulari.name>
-rw-r--r--gnu/packages/haskell-check.scm41
1 files changed, 41 insertions, 0 deletions
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index d571d46945..bb7f57b49d 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018 Tonton <tonton@riseup.net>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -996,3 +997,43 @@ values (similar to @code{toEnum} but for any algebraic data type).  This
 can be used for SmallCheck-style systematic testing, QuickCheck-style
 random testing, and hybrids of the two.")
     (license license:bsd-3)))
+
+(define-public ghc-inspection-testing
+  (package
+    (name "ghc-inspection-testing")
+    (version "0.4.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/inspection-testing/"
+             "inspection-testing-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bppz99p6ix6hah8lbr9mapl2zxgmkg9i7h6hk8wq6zf54hwz3yp"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://github.com/nomeata/inspection-testing")
+    (synopsis "GHC plugin to do inspection testing")
+    (description
+     "Some carefully crafted libraries make promises to their users beyond
+functionality and performance.
+
+Examples are: Fusion libraries promise intermediate data structures to be
+eliminated.  Generic programming libraries promise that the generic
+implementation is identical to the hand-written one.  Some libraries may
+promise allocation-free or branch-free code.
+
+Conventionally, the modus operandi in all these cases is that the library
+author manually inspects the (intermediate or final) code produced by the
+compiler.  This is not only tedious, but makes it very likely that some change,
+either in the library itself or the surrounding eco-system, breaks the
+library's promised without anyone noticing.
+
+This package provides a disciplined way of specifying such properties, and
+have them checked by the compiler.  This way, this checking can be part of the
+ususal development cycle and regressions caught early.
+
+See the documentation in \"Test.Inspection\" or the project webpage for more
+examples and more information.")
+    (license license:expat)))