summaryrefslogtreecommitdiff
path: root/dev-haskell/chasingbottoms
diff options
context:
space:
mode:
Diffstat (limited to 'dev-haskell/chasingbottoms')
-rw-r--r--dev-haskell/chasingbottoms/Manifest9
-rw-r--r--dev-haskell/chasingbottoms/chasingbottoms-1.3.0.11-r1.ebuild46
-rw-r--r--dev-haskell/chasingbottoms/chasingbottoms-1.3.0.13.ebuild41
-rw-r--r--dev-haskell/chasingbottoms/chasingbottoms-1.3.0.14.ebuild39
-rw-r--r--dev-haskell/chasingbottoms/chasingbottoms-1.3.1.2.ebuild46
-rw-r--r--dev-haskell/chasingbottoms/metadata.xml102
6 files changed, 283 insertions, 0 deletions
diff --git a/dev-haskell/chasingbottoms/Manifest b/dev-haskell/chasingbottoms/Manifest
new file mode 100644
index 000000000000..22c1d9c01216
--- /dev/null
+++ b/dev-haskell/chasingbottoms/Manifest
@@ -0,0 +1,9 @@
+DIST ChasingBottoms-1.3.0.11.tar.gz 31437 BLAKE2B 9db3ffe3b2c6d896138d826b093678988685a078f29cd4b03365d7860238ff309c9f50a5729a5347eb927005f5be0bc58e109e5435489eb8307d919265675add SHA512 acf939e4060b08a02fd1bd15473911551e834373b8e4e50f36cd832b64ec3798e9a41d3b26fdc9e9b84648862617da8ba859ee453086240f566ce4ae8bc0301e
+DIST ChasingBottoms-1.3.0.13.tar.gz 31474 BLAKE2B dcb059a1501933e477d09ecaba51b08aa30cf9ec97370e6c0d7f01c358b6a2c8c62a3529ccf8d39b6790bfafcc66acd7f1c089cfc5c5e6e176c7572c136da138 SHA512 050d66670a77de274f16d70dfbc231ab469067ce34af962a851c7f041b7e0812bb6480e3b3166e4ceda2509454ff3d1d85fdd977f63471d6f45c1162184aeb7d
+DIST ChasingBottoms-1.3.0.14.tar.gz 31485 BLAKE2B de7f8ec14712d7ae534de4b98d417c6939e837968a0c7575068dd222aeff5b2ea62f9edc5b5f6e31f266beee71dd2916787d687923acbde88f207fa8c47542e3 SHA512 672dbfb236b14cedd7c0039476c7d799b1718843336a60905816faf6f5d80491eaef59bdf4a8b000f0104ab452760964b64c5f09293535d517b3a33e6d382e13
+DIST ChasingBottoms-1.3.1.2.tar.gz 31555 BLAKE2B 106413449aaa4d88e140be3692a4eb37d340e6d73e91166e0da8ce1b9477e8868fa975e57e14642d01fcb2474df6d3d653cc617ab3b387f279d7a2560764680d SHA512 84d05b26916bda14bd0b33ff90154da88b5a8c01cae692a8cc11339aea2259b8d0001f3c3b21199ef59efbfb028dfd877f11f8543b55828ecf563f7c5cd711e0
+EBUILD chasingbottoms-1.3.0.11-r1.ebuild 1124 BLAKE2B f9d4699793386bd633e70530507ba825a12a2651b96724a02e8eb203189049dfab005fb1d6ead65c653628a3496c2c3043345fd62781861aed3d8ccd5b47f458 SHA512 ed3604103258a011cfc46c197e46c891635d91676f1f37b3d2550d3c460166f0ca72d8f650ceb6d2aa13c62c9da8dde7aa050cd946b6bd39bb829d1477408d4c
+EBUILD chasingbottoms-1.3.0.13.ebuild 1081 BLAKE2B 10eb8c3dec6817e501ea24d1ba4c08881ad143639b757cc32066e9044452bae7221da0b858a9bb71e44aa8e9860f3379425d792cb52cc06f5d1dd29f100cd7b4 SHA512 975f528910ead3595ecb3d8d7bfb956fbf32fabf725aae40dc8e6b65a06528fca2040f8f8fc6b7329aa8735e4c008dabbe7e23362fb38878da0cf41df3e55356
+EBUILD chasingbottoms-1.3.0.14.ebuild 1052 BLAKE2B e35d7df1c10e5739d5252c77c06907e814f11abe8e64914ae2b4f64adf348fc9e4e8dc6b95d8327a6942d635ab667f037d772769da278108e21e89b8d41976cf SHA512 9338f4ab5ebef00e7cf741cdbba770b6b977d29cd027249ed468478047ef67453aa5bbebfce302bc6a7b82536a275fb1f67eeb2c521b94974b34ac5a74b5ca7d
+EBUILD chasingbottoms-1.3.1.2.ebuild 1134 BLAKE2B 6a9881076864ed9c00678fff5631007d5a4208bd629d33c5c06e618bd46bedee4ea5bcda06456fc3234e24f20636be406f659afdbaf19c6ffe2cdbf61529001c SHA512 dd6d7de4e69335251beb6d85880c5a802bffbe7f6f529562c6fe8e8a895445d6c45f65c8de6b3325993d142eadc089140f879298062a54e2d64c1f3d22c6fbdb
+MISC metadata.xml 4089 BLAKE2B 82600e43001f4c9f567021394ff94cbadf8cb3e00259ea6e5fcc9035413823ee6ffbb49dabe0b64fc694aa549594d5f3b342b1a06424bd7b6d3fe640903d45c3 SHA512 d4423f7dbf1b4dc0e8a4b6803c55bec2a82ba31fe2609c5e68a7708b8a7bd8a65ae58db306772a9772e6b1e89752c918e2a04e3a914cf40ddebc286c3b98414c
diff --git a/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.11-r1.ebuild b/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.11-r1.ebuild
new file mode 100644
index 000000000000..beb123919b92
--- /dev/null
+++ b/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.11-r1.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+# ebuild generated by hackport 0.4.4.9999
+#hackport: flags: -build-tests
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
+inherit haskell-cabal
+
+MY_PN="ChasingBottoms"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="For testing partial and infinite values"
+HOMEPAGE="http://hackage.haskell.org/package/ChasingBottoms"
+SRC_URI="mirror://hackage/packages/archive/${MY_PN}/${PV}/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+RESTRICT=test # takes a lot
+
+RDEPEND=">=dev-haskell/mtl-1.1:=[profile?] <dev-haskell/mtl-2.3:=[profile?]
+ >=dev-haskell/quickcheck-2.1:2=[profile?]
+ >=dev-haskell/random-1.0:=[profile?] <dev-haskell/random-1.2:=[profile?]
+ >=dev-haskell/syb-0.1.0.2:=[profile?] <dev-haskell/syb-0.5:=[profile?]
+ >=dev-lang/ghc-7.4.1:=
+"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.9.2
+"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ cabal_chdeps \
+ 'QuickCheck >= 2.1 && < 2.8' 'QuickCheck >= 2.1'
+}
+
+src_configure() {
+ haskell-cabal_src_configure \
+ --flag=-build-tests
+}
diff --git a/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.13.ebuild b/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.13.ebuild
new file mode 100644
index 000000000000..1b1f14687b0b
--- /dev/null
+++ b/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.13.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+# ebuild generated by hackport 0.4.5.9999
+#hackport: flags: -build-tests
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
+inherit haskell-cabal
+
+MY_PN="ChasingBottoms"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="For testing partial and infinite values"
+HOMEPAGE="http://hackage.haskell.org/package/ChasingBottoms"
+SRC_URI="mirror://hackage/packages/archive/${MY_PN}/${PV}/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RESTRICT=test # takes a lot
+
+RDEPEND=">=dev-haskell/mtl-1.1:=[profile?] <dev-haskell/mtl-2.3:=[profile?]
+ >=dev-haskell/quickcheck-2.1:2=[profile?] <dev-haskell/quickcheck-2.9:2=[profile?]
+ >=dev-haskell/random-1.0:=[profile?] <dev-haskell/random-1.2:=[profile?]
+ >=dev-haskell/syb-0.1.0.2:=[profile?] <dev-haskell/syb-0.6:=[profile?]
+ >=dev-lang/ghc-7.4.1:=
+"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.9.2
+"
+
+S="${WORKDIR}/${MY_P}"
+
+src_configure() {
+ haskell-cabal_src_configure \
+ --flag=-build-tests
+}
diff --git a/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.14.ebuild b/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.14.ebuild
new file mode 100644
index 000000000000..cdc5d93dcc76
--- /dev/null
+++ b/dev-haskell/chasingbottoms/chasingbottoms-1.3.0.14.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+# ebuild generated by hackport 0.4.7.9999
+#hackport: flags: -build-tests
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
+inherit haskell-cabal
+
+MY_PN="ChasingBottoms"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="For testing partial and infinite values"
+HOMEPAGE="http://hackage.haskell.org/package/ChasingBottoms"
+SRC_URI="mirror://hackage/packages/archive/${MY_PN}/${PV}/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND=">=dev-haskell/mtl-1.1:=[profile?] <dev-haskell/mtl-2.3:=[profile?]
+ >=dev-haskell/quickcheck-2.1:2=[profile?] <dev-haskell/quickcheck-2.9:2=[profile?]
+ >=dev-haskell/random-1.0:=[profile?] <dev-haskell/random-1.2:=[profile?]
+ >=dev-haskell/syb-0.1.0.2:=[profile?] <dev-haskell/syb-0.7:=[profile?]
+ >=dev-lang/ghc-7.4.1:=
+"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.9.2
+"
+
+S="${WORKDIR}/${MY_P}"
+
+src_configure() {
+ haskell-cabal_src_configure \
+ --flag=-build-tests
+}
diff --git a/dev-haskell/chasingbottoms/chasingbottoms-1.3.1.2.ebuild b/dev-haskell/chasingbottoms/chasingbottoms-1.3.1.2.ebuild
new file mode 100644
index 000000000000..dd2b4df038a7
--- /dev/null
+++ b/dev-haskell/chasingbottoms/chasingbottoms-1.3.1.2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+# ebuild generated by hackport 0.5.9999
+#hackport: flags: -build-tests
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
+inherit haskell-cabal
+
+MY_PN="ChasingBottoms"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="For testing partial and infinite values"
+HOMEPAGE="http://hackage.haskell.org/package/ChasingBottoms"
+SRC_URI="mirror://hackage/packages/archive/${MY_PN}/${PV}/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+RDEPEND=">=dev-haskell/mtl-1.1:=[profile?] <dev-haskell/mtl-2.3:=[profile?]
+ >=dev-haskell/quickcheck-2.1:2=[profile?] <dev-haskell/quickcheck-2.10:2=[profile?]
+ >=dev-haskell/random-1.0:=[profile?] <dev-haskell/random-1.2:=[profile?]
+ >=dev-haskell/syb-0.1.0.2:=[profile?] <dev-haskell/syb-0.7:=[profile?]
+ >=dev-lang/ghc-7.4.1:=
+"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.9.2
+"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ default
+
+ cabal_chdeps \
+ 'base >= 4.0 && < 4.10' 'base >= 4.0'
+}
+
+src_configure() {
+ haskell-cabal_src_configure \
+ --flag=-build-tests
+}
diff --git a/dev-haskell/chasingbottoms/metadata.xml b/dev-haskell/chasingbottoms/metadata.xml
new file mode 100644
index 000000000000..ec83e2946e46
--- /dev/null
+++ b/dev-haskell/chasingbottoms/metadata.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>haskell@gentoo.org</email>
+ <name>Gentoo Haskell</name>
+ </maintainer>
+ <longdescription>
+ Do you ever feel the need to test code involving bottoms (e.g. calls to
+ the @error@ function), or code involving infinite values? Then this
+ library could be useful for you.
+
+ It is usually easy to get a grip on bottoms by showing a value and
+ waiting to see how much gets printed before the first exception is
+ encountered. However, that quickly gets tiresome and is hard to automate
+ using e.g. QuickCheck
+ (&lt;http://www.cse.chalmers.se/~rjmh/QuickCheck/&gt;). With this library you
+ can do the tests as simply as the following examples show.
+
+ Testing explicitly for bottoms:
+
+ [@&gt; isBottom (head [\])@] @True@
+
+ [@&gt; isBottom bottom@] @True@
+
+ [@&gt; isBottom (\\_ -&gt; bottom)@] @False@
+
+ [@&gt; isBottom (bottom, bottom)@] @False@
+
+ Comparing finite, partial values:
+
+ [@&gt; ((bottom, 3) :: (Bool, Int)) ==! (bottom, 2+5-4)@] @True@
+
+ [@&gt; ((bottom, bottom) :: (Bool, Int)) &lt;! (bottom, 8)@] @True@
+
+ Showing partial and infinite values (@\\\/!@ is join and @\/\\!@ is meet):
+
+ [@&gt; approxShow 4 $ (True, bottom) \\\/! (bottom, \'b\')@] @\"Just (True, \'b\')\"@
+
+ [@&gt; approxShow 4 $ (True, bottom) \/\\! (bottom, \'b\')@] @\"(_|_, _|_)\"@
+
+ [@&gt; approxShow 4 $ ([1..\] :: [Int\])@] @\"[1, 2, 3, _\"@
+
+ [@&gt; approxShow 4 $ (cycle [bottom\] :: [Bool\])@] @\"[_|_, _|_, _|_, _\"@
+
+ Approximately comparing infinite, partial values:
+
+ [@&gt; approx 100 [2,4..\] ==! approx 100 (filter even [1..\] :: [Int\])@] @True@
+
+ [@&gt; approx 100 [2,4..\] \/=! approx 100 (filter even [bottom..\] :: [Int\])@] @True@
+
+ The code above relies on the fact that @bottom@, just as @error
+ \"...\"@, @undefined@ and pattern match failures, yield
+ exceptions. Sometimes we are dealing with properly non-terminating
+ computations, such as the following example, and then it can be nice to
+ be able to apply a time-out:
+
+ [@&gt; timeOut' 1 (reverse [1..5\])@] @Value [5,4,3,2,1]@
+
+ [@&gt; timeOut' 1 (reverse [1..\])@] @NonTermination@
+
+ The time-out functionality can be used to treat \"slow\" computations as
+ bottoms:
+
+ [@&gt; let tweak = Tweak &amp;#x7b; approxDepth = Just 5, timeOutLimit = Just 2 &amp;#x7d;@]
+
+ [@&gt; semanticEq tweak (reverse [1..\], [1..\]) (bottom :: [Int\], [1..\] :: [Int\])@] @True@
+
+ [@&gt; let tweak = noTweak &amp;#x7b; timeOutLimit = Just 2 &amp;#x7d;@]
+
+ [@&gt; semanticJoin tweak (reverse [1..\], True) ([\] :: [Int\], bottom)@] @Just ([],True)@
+
+ This can of course be dangerous:
+
+ [@&gt; let tweak = noTweak &amp;#x7b; timeOutLimit = Just 0 &amp;#x7d;@]
+
+ [@&gt; semanticEq tweak (reverse [1..100000000\]) (bottom :: [Integer\])@] @True@
+
+ Timeouts can also be applied to @IO@ computations:
+
+ [@&gt; let primes = unfoldr (\\(x:xs) -&gt; Just (x, filter ((\/= 0) . (\`mod\` x)) xs)) [2..\]@]
+
+ [@&gt; timeOutMicro 100 (print $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,9NonTermination@
+
+ [@&gt; timeOutMicro 100 (print $ take 6 $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,997,1163,1993NonTermination@
+
+ [@&gt; timeOutMicro 100 (print $ take 6 $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,997,1163,1993,2657]@
+
+ [@ @] @Value ()@
+
+ For the underlying theory and a larger example involving use of
+ QuickCheck, see the article \"Chasing Bottoms, A Case Study in Program
+ Verification in the Presence of Partial and Infinite Values\"
+ (&lt;http://www.cse.chalmers.se/~nad/publications/danielsson-jansson-mpc2004.html&gt;).
+
+ The code has been tested using GHC. Most parts can probably be
+ ported to other Haskell compilers, but this would require some work.
+ The @TimeOut@ functions require preemptive scheduling, and most of
+ the rest requires @Data.Generics@; @isBottom@ only requires
+ exceptions, though.
+ </longdescription>
+</pkgmetadata>