Giriş olarak bir veya daha fazla işlev alan bir QuickCheck özelliği yazmaya çalışıyorum. Bu fonksiyon kompozisyonu kontrol etmek için bir özellik düşünün basit tutabilmek için ardışık işlevi uygulamasına eşdeğerdir ve kirli hızlı ve test sürücüsü:HızlıKontrol özelliklerinde kullanılan gösterme işlevleri
import Test.QuickCheck
prop_composition :: (Int -> Int) -> (Int -> Int) -> Int -> Bool
prop_composition f g x = (f . g) x == f (g x)
main :: IO()
main = quickCheck prop_composition
Maalesef bu derleme değil bir girdiler çünkü mülkiyet QuickCheck girişler başarısızlık neyin neden rapor böylece Show
uygulamak gerekir, ancak işlevleri için hiçbir Show
uygulaması var: Ben fonksiyonlar için Show
benim kendi do-nothing örneğini yazmaya denedim
Test.hs:10:7:
No instance for (Show (Int -> Int))
arising from a use of `quickCheck' at Test.hs:10:7-33
Possible fix: add an instance declaration for (Show (Int -> Int))
In the expression: quickCheck prop_composition
In the definition of `main': main = quickCheck prop_composition
...
derler ama-Wall
ile bir uyarı tetikler
instance Show (a -> b) where
show _ = "[func]"
... ...
Test.hs:3:9: Warning: orphan instance: instance Show (a -> b)
... bana bunu yapmak daha doğru yol olduğunu düşünüyorum yapar.
Bağırsak bana cevabın Test.QuickCheck.Function
modülünde yandığını, ancak belgenin belgesiz olduğunu ve tür imzalarına bakmanın ne anlama geldiğini veya nasıl kullanılmasının amaçlandığını anlayamıyorum.