学習課題として、 のジェネレーターを書きたいと思いData.MeldableHeap
ます。私はそれを次のようにパターン化しました:
genericArbitrary :: (PriorityQueue pq, Arbitrary a, Ord a) => Gen (pq a)
genericArbitrary = fromList `fmap` listOf arbitrary
私のコード:
{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
import Test.QuickCheck
import Control.Monad (liftM)
import Data.MeldableHeap
genericArbitrary :: (PQ pq, Arbitrary a, Ord a) => Gen (pq a)
genericArbitrary = liftM (foldr (\x acc -> insert x acc) empty) (listOf arbitrary)
しかし、これは上記を取得します:
`pq' is applied to too many type arguments
In the type signature for `genericArbitrary':
genericArbitrary :: (PQ pq, Arbitrary a, Ord a) => Gen (pq a)
ご案内をお願いします。
更新:あなたの助けを借りて私はそれを得ました:
実際のテストはもっと良いかもしれませんが、重要な点は、重要な例で QuickCheck を使用する方法を学ぶことでした。ありがとう、H