-2
我試圖生成任意大小的元素爲我的自定義數據類型的任意元素:快速檢查發電機 - 自定義類型
newtype ZippList a = ZPL ([a], [a])
deriving (Show)
這是我得到:
instance Arbitrary a => Arbitrary (ZippList a) where
arbitrary = sized zipplist where
zipplist n = do
firstLength <- choose(0,n)
secondLength <- n - firstLength
firstList <- [arbitrary :: Gen a | [1..firstLength]]
secondList <- [arbitrary :: Gen a | [1..secondLength]]
return $ ZPL (firstList, secondList)
但是它並不能編譯。該編譯失敗了生成a的兩個列表。我怎樣才能生成一個任意的?
該死的,我有點忘了實際產生的值與_ <-
..對不起,一個微不足道的問題,我是編碼的時間很晚。
'序列[任意| _ < - [1..firstLength]]'看起來很像'replicateM firstLength random'給我! – epsilonhalbe
@epsilonhalbe我也更喜歡你的方式,但理解方法似乎是快速啓動出於某種原因的慣用,請參閱https://www.schoolofhaskell.com/user/griba/quick-check-generator-of-pair-List- index-where-index-list-range – jamshidh
該死的,我有點忘了用'_ <-'實際生成值..對於這個微不足道的問題,我正在編碼時間很晚。無論如何感謝您的答案。 – VSZM