次のコードの CoArbitrary に渡す ex は何ですか?
Test.QuickCheck.Function で Function を使用して、命題で f と g を表す方法は?
と書くのは正しいですか、そうでない場合、どのように?
where types = [f, g] :: [関数]
バリアントは Function を受け入れることができますか? 私が知っているように、生成関数は><またはQuickCheckのソースコードに記載されているバリアントをよく使用します
エラー:
<interactive>:1:12:
No instance for (Eq (b0 -> b0))
arising from a use of `prop_commutative'
Possible fix: add an instance declaration for (Eq (b0 -> b0))
In the first argument of `quickCheck', namely `prop_commutative'
In the expression: quickCheck prop_commutative
In an equation for `it': it = quickCheck prop_commutative
[更新しました]
別の記述は、関数の例を模倣し、ghci の '=' でエラーを解析 let prop_commutative (Fun _ f) (Fun _ g) = (f.g) == (g.f) できます。
コード:
import Test.QuickCheck.Function
import Test.QuickCheck.Gen
import Test.QuickCheck
let prop_commutative (Fun _ f) (Fun _ g) = (f.g) == (g.f)
main = quickCheck prop_commutative