質問

私を通じて 実世界 ウ 一つの 演習の第4章では実現しようとする foldrconcat.と思ったこの候補者試験 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 インスタンスが IntArbitrary インスタンスである [a] すべての asが自身のインスタンス Arbitrary).うですが、実はそうではありません。

を行ったコードの自分(交換 import FoldExcercisesfconcat = concat やっ200試験としていて、私mystifiedしていないとメールが届きました。がんを追加する必要がある Arbitrary インスタンス.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top