Как распечатать сгенерированный результат из произвольного? - PullRequest
0 голосов
/ 18 ноября 2011

quickCheckResult принимает только something -> Bool, тогда я имитирую какой-то пример, передаю

[Colour] -> Bool

Какова функция скобки [Color]?почему не Colour -> Bool?Как передать произвольный экземпляр в quickCheckResult?

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

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

[Обновлено] Моя цель заключается в следующем можно запустить

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.Как использовать QuickCheck.Function (Обновлено)

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

ошибка разбора (возможно, неверный отступ)

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Хорошо, вам, вероятно, следует разделить это на отдельные вопросы.

То, что с [Color] означает, что функция принимает список Color в качестве параметра.

Произвольная функция уже выполняется quickCheck. Нет необходимости передавать в экземпляре.

Проблема с 3 связана с вашей привязкой let. Пусть привязки используются для введения новых привязок в локальную область, однако вы определяете это в локальной области, поэтому не используете let.

import Test.QuickCheck.Function
prop :: Fun Fun Integer -> Bool
prop (Fun _ f) (Fun _ g) = (g.f) x == (f.g) x 
quickCheck prop
1 голос
/ 18 ноября 2011

Тип [Colour] представляет собой список Colour.

...