module BirthdayLibrary =
type Birthday =
{ day :int
month :int }
module DataGen =
let birthdayGenerator (months:option<list<int>>) =
let monthGen = match months with
| Some m -> Gen.elements m
| None -> FsCheck.Gen.choose(1,12)
(fun m d -> { day = d
month = m}:BirthdayLibrary.Birthday)
<!> monthGen
<*> FsCheck.Gen.choose(1,28)
//I want this to have the signature Gen<BirthdayLibrary.Birthday list>
let oneForEveryMonthGen =
[ for m in [1 .. 12] ->
(fun mo -> birthdayGenerator (Some [mo]))]
可以說我有類似上面的東西。我有一個生日發電機,返回類型爲Gen <BirthdayLibrary.Birthday>。您可以選擇指定月份。從代碼<a>到代碼<列表中的最佳方式> WHILE對列表的代碼中的項目指定了一些約束?我可以想辦法獲得<代碼<a>列表>,我認爲這不適合編寫一個父對象,該父對象應該包含<列表>(這是本示例的基礎)。我也可以想辦法做代碼<代碼<a>列表>,我有組成的問題,以及列表中的所有值是相同的。我看到Gen.arrayOf位,我想不出如何讓它與數組中的每個項目的值一起工作。有沒有辦法從Gen <a>到Gen <a list>,同時指定一個綁定?
我會添加一個答案,給你你想要的簽名以及約束,但是我必須承認我不完全理解你在構成問題。 – 2015-01-21 09:46:17
由組合問題我的意思是我無法解開Gen list>以便與具有類型屬性的對象一起使用。 –
Hohohodown
2015-01-21 20:29:19