Question

quickCheckResult only accept something -> Bool, then i mimic some example, pass

[Colour] -> Bool

what is function of the bracket of [Colour]? why not Colour -> Bool? How to pass Arbitrary instance to quickCheckResult?

data Colour = Green | Blue
instance Arbitrary Colour where
   arbitrary = oneof [return Green, return Blue]

main = quickCheckResult ((\s -> s == s) :: [Colour] -> Bool)

[Updated] My goal is the following can run

import Test.QuickCheck.Function
import Test.QuickCheck.Gen
import Test.QuickCheck
import Test.QuickCheck.Function
import Test.QuickCheck.Arbitrary
import Test.QuickCheck.Property
import Test.QuickCheck.Test

prop1 f g x = (g.f) x == (f.g) x where types = [f, g] :: [Int->Int]

instance CoArbitrary ex where
  coarbitrary f g = prop1 (variant 0 f) (variant 0 g)

main = quickCheck prop1

test5.hs:11:10:
    Illegal instance declaration for `CoArbitrary ex'
      (All instance types must be of the form (T a1 ... an)
       where a1 ... an are *distinct type variables*,
       and each type variable appears at most once in the instance head.
       Use -XFlexibleInstances if you want to disable this.)
    In the instance declaration for `CoArbitrary ex'

3.How to use QuickCheck.Function (Updated)

prop :: Fun Fun Integer -> Bool
let prop (Fun _ f) (Fun _ g) = (g.f) x == (f.g) x
quickCheck prop

parse error (possibly incorrect indentation)

Was it helpful?

Solution

Ok, you should probably split this up into separate questions.

The thing with [Colour] means that the function accepts a list of Colour as a parameter.

The arbitrary function is executed by quickCheck already. There is no need to pass in the instance.

The problem with 3 is with your let binding. Let bindings are used to introduce new bindings into a local scope, however, you are defining this in local scope so you do not use let.

import Test.QuickCheck.Function
prop :: Fun Fun Integer -> Bool
prop (Fun _ f) (Fun _ g) = (g.f) x == (f.g) x 
quickCheck prop

OTHER TIPS

The type [Colour] is a list of Colour.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top