compdata-0.11: Compositional Data Types

Copyright(c) 2011 Patrick Bahr
LicenseBSD3
MaintainerPatrick Bahr <paba@diku.dk>
Stabilityexperimental
Portabilitynon-portable (GHC Extensions)
Safe HaskellNone
LanguageHaskell98

Data.Comp.Arbitrary

Contents

Description

This module defines generation of arbitrary values for signatures, which lifts to generating arbitrary terms.

Synopsis

Documentation

class ArbitraryF f where Source #

Signature arbitration. An instance ArbitraryF f gives rise to an instance Arbitrary (Term f).

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (f v))] Source #

arbitraryF :: Arbitrary v => Gen (f v) Source #

shrinkF :: Arbitrary v => f v -> [f v] Source #

Orphan instances

ArbitraryF [] Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen [v])] Source #

arbitraryF :: Arbitrary v => Gen [v] Source #

shrinkF :: Arbitrary v => [v] -> [[v]] Source #

ArbitraryF Maybe Source # 
ArbitraryF f => Arbitrary (Term f) Source #

This lifts instances of ArbitraryF to instances of Arbitrary for the corresponding term type.

Methods

arbitrary :: Gen (Term f) #

shrink :: Term f -> [Term f] #

Arbitrary b0 => ArbitraryF ((,) b0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, v) Source #

shrinkF :: Arbitrary v => (b0, v) -> [(b0, v)] Source #

ArbitraryF f => ArbitraryF (Context f) Source #

This lifts instances of ArbitraryF to instances of ArbitraryF for the corresponding context functor.

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (Context f v))] Source #

arbitraryF :: Arbitrary v => Gen (Context f v) Source #

shrinkF :: Arbitrary v => Context f v -> [Context f v] Source #

(ArbitraryF f, Arbitrary a) => Arbitrary (Context f a) Source #

This lifts instances of ArbitraryF to instances of Arbitrary for the corresponding context type.

Methods

arbitrary :: Gen (Context f a) #

shrink :: Context f a -> [Context f a] #

(Arbitrary b0, Arbitrary c0) => ArbitraryF ((,,) b0 c0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, v) -> [(b0, c0, v)] Source #

(Arbitrary b0, Arbitrary c0, Arbitrary d0) => ArbitraryF ((,,,) b0 c0 d0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, d0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, d0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, d0, v) -> [(b0, c0, d0, v)] Source #

(ArbitraryF f, Arbitrary p) => ArbitraryF ((:&:) * f p) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen ((* :&: f) p v))] Source #

arbitraryF :: Arbitrary v => Gen ((* :&: f) p v) Source #

shrinkF :: Arbitrary v => (* :&: f) p v -> [(* :&: f) p v] Source #

(ArbitraryF f, ArbitraryF g) => ArbitraryF ((:+:) * f g) Source #

Instances of ArbitraryF are closed under forming sums.

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen ((* :+: f) g v))] Source #

arbitraryF :: Arbitrary v => Gen ((* :+: f) g v) Source #

shrinkF :: Arbitrary v => (* :+: f) g v -> [(* :+: f) g v] Source #

(Arbitrary b0, Arbitrary c0, Arbitrary d0, Arbitrary e0) => ArbitraryF ((,,,,) b0 c0 d0 e0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, d0, e0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, d0, e0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, d0, e0, v) -> [(b0, c0, d0, e0, v)] Source #

(Arbitrary b0, Arbitrary c0, Arbitrary d0, Arbitrary e0, Arbitrary f0) => ArbitraryF ((,,,,,) b0 c0 d0 e0 f0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, d0, e0, f0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, d0, e0, f0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, d0, e0, f0, v) -> [(b0, c0, d0, e0, f0, v)] Source #

(Arbitrary b0, Arbitrary c0, Arbitrary d0, Arbitrary e0, Arbitrary f0, Arbitrary g0) => ArbitraryF ((,,,,,,) b0 c0 d0 e0 f0 g0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, d0, e0, f0, g0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, d0, e0, f0, g0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, d0, e0, f0, g0, v) -> [(b0, c0, d0, e0, f0, g0, v)] Source #

(Arbitrary b0, Arbitrary c0, Arbitrary d0, Arbitrary e0, Arbitrary f0, Arbitrary g0, Arbitrary h0) => ArbitraryF ((,,,,,,,) b0 c0 d0 e0 f0 g0 h0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, d0, e0, f0, g0, h0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, d0, e0, f0, g0, h0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, d0, e0, f0, g0, h0, v) -> [(b0, c0, d0, e0, f0, g0, h0, v)] Source #

(Arbitrary b0, Arbitrary c0, Arbitrary d0, Arbitrary e0, Arbitrary f0, Arbitrary g0, Arbitrary h0, Arbitrary i0) => ArbitraryF ((,,,,,,,,) b0 c0 d0 e0 f0 g0 h0 i0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, d0, e0, f0, g0, h0, i0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, d0, e0, f0, g0, h0, i0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, d0, e0, f0, g0, h0, i0, v) -> [(b0, c0, d0, e0, f0, g0, h0, i0, v)] Source #

(Arbitrary b0, Arbitrary c0, Arbitrary d0, Arbitrary e0, Arbitrary f0, Arbitrary g0, Arbitrary h0, Arbitrary i0, Arbitrary j0) => ArbitraryF ((,,,,,,,,,) b0 c0 d0 e0 f0 g0 h0 i0 j0) Source # 

Methods

arbitraryF' :: Arbitrary v => [(Int, Gen (b0, c0, d0, e0, f0, g0, h0, i0, j0, v))] Source #

arbitraryF :: Arbitrary v => Gen (b0, c0, d0, e0, f0, g0, h0, i0, j0, v) Source #

shrinkF :: Arbitrary v => (b0, c0, d0, e0, f0, g0, h0, i0, j0, v) -> [(b0, c0, d0, e0, f0, g0, h0, i0, j0, v)] Source #