-
Notifications
You must be signed in to change notification settings - Fork 24
/
quickspec.cabal
116 lines (108 loc) · 3.47 KB
/
quickspec.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
Name: quickspec
Version: 2.2
Cabal-version: >= 1.10
Build-type: Simple
Homepage: https://github.com/nick8325/quickspec
Author: Nick Smallbone
Maintainer: nicsma@chalmers.se
License: BSD3
License-file: LICENSE
Copyright: 2009-2019 Nick Smallbone
Category: Testing
Synopsis: Equational laws for free!
Description:
QuickSpec takes your Haskell code and, as if by magic, discovers laws
about it. You give QuickSpec a collection of Haskell functions;
QuickSpec tests your functions with QuickCheck and prints out laws which
seem to hold.
.
For example, give QuickSpec the functions @reverse@, @++@ and @[]@, and
it will find six laws:
.
> reverse [] == []
> xs ++ [] == xs
> [] ++ xs == xs
> reverse (reverse xs) == xs
> (xs ++ ys) ++ zs == xs ++ (ys ++ zs)
> reverse xs ++ reverse ys == reverse (ys ++ xs)
.
QuickSpec can find equational laws as well as conditional equations. All
you need to supply are the functions to test, as well as @Ord@ and
@Arbitrary@ instances for QuickSpec to use in testing; the rest is
automatic.
.
For information on how to use QuickSpec, see the documentation in the main
module, "QuickSpec". You can also look in the
@<https://github.com/nick8325/quickspec/tree/master/examples examples>@
directory, for example at
@<https://github.com/nick8325/quickspec/tree/master/examples/Lists.hs Lists.hs>@,
@<https://github.com/nick8325/quickspec/tree/master/examples/IntSet.hs IntSet.hs>@, or
@<https://github.com/nick8325/quickspec/tree/master/examples/Parsing.hs Parsing.hs>@.
To read about how
QuickSpec works, see our paper,
<http://www.cse.chalmers.se/~nicsma/papers/quickspec2.pdf Quick specifications for the busy programmer>.
Extra-source-files:
README.md
examples/Arith.hs
examples/Bools.hs
examples/Composition.hs
examples/Curry.hs
examples/Geometry.hs
examples/HugeLists.hs
examples/IntSet.hs
examples/ListMonad.hs
examples/Lists.hs
examples/Octonions.hs
examples/Parsing.hs
examples/PrettyPrinting.hs
examples/PrettyPrintingModel.hs
examples/Regex.hs
examples/Sorted.hs
examples/Zip.hs
source-repository head
type: git
location: git://github.com/nick8325/quickspec.git
branch: master
library
default-language: Haskell2010
ghc-options: -W
hs-source-dirs: src
Exposed-modules:
QuickSpec
QuickSpec.Internal
QuickSpec.Internal.Explore
QuickSpec.Internal.Explore.Conditionals
QuickSpec.Internal.Explore.Polymorphic
QuickSpec.Internal.Explore.Schemas
QuickSpec.Internal.Explore.Terms
QuickSpec.Internal.Haskell
QuickSpec.Internal.Haskell.Resolve
QuickSpec.Internal.Parse
QuickSpec.Internal.Prop
QuickSpec.Internal.Pruning
QuickSpec.Internal.Pruning.Background
QuickSpec.Internal.Pruning.Twee
QuickSpec.Internal.Pruning.Types
QuickSpec.Internal.Pruning.UntypedTwee
QuickSpec.Internal.Pruning.PartialApplication
QuickSpec.Internal.Term
QuickSpec.Internal.Terminal
QuickSpec.Internal.Testing
QuickSpec.Internal.Testing.DecisionTree
QuickSpec.Internal.Testing.QuickCheck
QuickSpec.Internal.Type
QuickSpec.Internal.Utils
Build-depends:
QuickCheck >= 2.14.2,
quickcheck-instances >= 0.3.16,
base >= 4.7 && < 5,
constraints,
containers,
data-lens-light >= 0.1.1,
dlist,
random,
spoon,
template-haskell,
transformers,
twee-lib,
uglymemo