発生リストのリストのIntとQuickCheck
-
18-09-2019 - |
質問
私を通じて 実世界
ウ 一つの
演習の第4章では実現しようとする foldr
基
concat
.と思ったこの候補者試験
QuickCheckがあるので、既存の実施を確
ます。しかしながら、それに要するかを定義のインスタンス
Arbitrary
typeclassを生成できる任意の [[Int]]
.していきたいと思い
などではないかと思います。初めての試み:
module FoldExcercises_Test
where
import Test.QuickCheck
import Test.QuickCheck.Batch
import FoldExcercises
prop_concat xs =
concat xs == fconcat xs
where types = xs ::[[Int]]
options = TestOptions { no_of_tests = 200
, length_of_tests = 1
, debug_tests = True }
allChecks = [
run (prop_concat)
]
main = do
runTests "simple" options allChecks
この結果に試験を行っています。みッ
個私は推測する Arbitrary
インスタンス宣言が必要であったと
追加
instance Arbitrary a => Arbitrary [[a]] where
arbitrary = sized arb'
where arb' n = vector n (arbitrary :: Gen a)
この結果、ghciを訴える私のインスタンス宣言
無効なことになるの追加-XFlexibleInstancesが解決私の問題です。追加の {-# OPTIONS_GHC -XFlexibleInstances #-}
指令
結果をタイプのミスマッチと重複する場合に警告が表示されます。
なので私にとっての必要なこと。私は明らかに新しい るウびないので、見るものを資源に教えてくれるので助かります.任意のポインタをよろしくお願いいたします。
編集
された惑QuickCheckの出力の場合は試験の最初に fconcat
に定義される
fconcat = undefined
実際に実行機能を正しく実際に期待する。 DOOP!
解決
[[Int]]
すでに Arbitrary
インスタンスが Int
は Arbitrary
インスタンスである [a]
すべての a
sが自身のインスタンス Arbitrary
).うですが、実はそうではありません。
を行ったコードの自分(交換 import FoldExcercises
と fconcat = concat
やっ200試験としていて、私mystifiedしていないとメールが届きました。がんを追加する必要がある Arbitrary
インスタンス.