、私はここでHaskellの任意の型クラスのインスタンス戻り値の型
quickCheck (semigroupAssoc :: IdentAssoc)
で呼び出す、
semigroupAssoc :: (Eq m, S.Semigroup m) => m -> m -> m -> Bool
semigroupAssoc a b c =
(a S.<> (b S.<> c)) == ((a S.<> b) S.<> c)
type IdentAssoc = Identity String -> Identity String -> Identity String -> Bool
のための任意の型クラスのインスタンス
instance (Arbitrary a) => Arbitrary (Identity a) where
arbitrary = do
a <- Test.QuickCheck.arbitrary
return (Identity a)
をquickcheckテストをされて書いています
私の任意のインスタンスでは、(アイデンティティa)またはちょうどaを返すことができます。 (Identity a)は正しいですが、コンパイルエラーがなく、実行すると無限ループが発生します。どうしてこれなの?
同じ機能をもう一度呼び出すだけです。 –
私は再びどの機能を呼びますか? – tesserakt
あなたが定義したものです。 –