diff options
Diffstat (limited to 'dev-haskell/chasingbottoms')
-rw-r--r-- | dev-haskell/chasingbottoms/Manifest | 9 | ||||
-rw-r--r-- | dev-haskell/chasingbottoms/chasingbottoms-1.3.0.11-r1.ebuild | 46 | ||||
-rw-r--r-- | dev-haskell/chasingbottoms/chasingbottoms-1.3.0.13.ebuild | 41 | ||||
-rw-r--r-- | dev-haskell/chasingbottoms/chasingbottoms-1.3.0.14.ebuild | 39 | ||||
-rw-r--r-- | dev-haskell/chasingbottoms/chasingbottoms-1.3.1.2.ebuild | 46 | ||||
-rw-r--r-- | dev-haskell/chasingbottoms/metadata.xml | 102 |
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 + (<http://www.cse.chalmers.se/~rjmh/QuickCheck/>). With this library you + can do the tests as simply as the following examples show. + + Testing explicitly for bottoms: + + [@> isBottom (head [\])@] @True@ + + [@> isBottom bottom@] @True@ + + [@> isBottom (\\_ -> bottom)@] @False@ + + [@> isBottom (bottom, bottom)@] @False@ + + Comparing finite, partial values: + + [@> ((bottom, 3) :: (Bool, Int)) ==! (bottom, 2+5-4)@] @True@ + + [@> ((bottom, bottom) :: (Bool, Int)) <! (bottom, 8)@] @True@ + + Showing partial and infinite values (@\\\/!@ is join and @\/\\!@ is meet): + + [@> approxShow 4 $ (True, bottom) \\\/! (bottom, \'b\')@] @\"Just (True, \'b\')\"@ + + [@> approxShow 4 $ (True, bottom) \/\\! (bottom, \'b\')@] @\"(_|_, _|_)\"@ + + [@> approxShow 4 $ ([1..\] :: [Int\])@] @\"[1, 2, 3, _\"@ + + [@> approxShow 4 $ (cycle [bottom\] :: [Bool\])@] @\"[_|_, _|_, _|_, _\"@ + + Approximately comparing infinite, partial values: + + [@> approx 100 [2,4..\] ==! approx 100 (filter even [1..\] :: [Int\])@] @True@ + + [@> 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: + + [@> timeOut' 1 (reverse [1..5\])@] @Value [5,4,3,2,1]@ + + [@> timeOut' 1 (reverse [1..\])@] @NonTermination@ + + The time-out functionality can be used to treat \"slow\" computations as + bottoms: + + [@> let tweak = Tweak &#x7b; approxDepth = Just 5, timeOutLimit = Just 2 &#x7d;@] + + [@> semanticEq tweak (reverse [1..\], [1..\]) (bottom :: [Int\], [1..\] :: [Int\])@] @True@ + + [@> let tweak = noTweak &#x7b; timeOutLimit = Just 2 &#x7d;@] + + [@> semanticJoin tweak (reverse [1..\], True) ([\] :: [Int\], bottom)@] @Just ([],True)@ + + This can of course be dangerous: + + [@> let tweak = noTweak &#x7b; timeOutLimit = Just 0 &#x7d;@] + + [@> semanticEq tweak (reverse [1..100000000\]) (bottom :: [Integer\])@] @True@ + + Timeouts can also be applied to @IO@ computations: + + [@> let primes = unfoldr (\\(x:xs) -> Just (x, filter ((\/= 0) . (\`mod\` x)) xs)) [2..\]@] + + [@> timeOutMicro 100 (print $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,9NonTermination@ + + [@> timeOutMicro 100 (print $ take 6 $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,997,1163,1993NonTermination@ + + [@> 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\" + (<http://www.cse.chalmers.se/~nad/publications/danielsson-jansson-mpc2004.html>). + + 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> |