F# Can';I don’我不知道怎样用发电机制造发电机

F# Can';I don’我不知道怎样用发电机制造发电机,f#,fscheck,F#,Fscheck,我很难弄清楚如何在不使用gen工作流语法的情况下生成fscheck生成器,并假设一定有一种好方法可以做到这一点。我最终得到一个嵌套的Gen您可以使用>=操作符: 让随机列表长度= 选择(5,8)代 >>=(有趣的len->Gen.elements['a';'b';'c']|>Gen.listOfLength len) 非常感谢!对于可发现性,是否应该有类似Option.bind和Result.bind的Gen.bind?是的,也许。你是第一个提出要求的人:)这句话的意思是,在过去的几年里,bin

我很难弄清楚如何在不使用
gen
工作流语法的情况下生成fscheck生成器,并假设一定有一种好方法可以做到这一点。我最终得到一个嵌套的
Gen您可以使用
>=
操作符:

让随机列表长度=
选择(5,8)代
>>=(有趣的len->Gen.elements['a';'b';'c']|>Gen.listOfLength len)

非常感谢!对于可发现性,是否应该有类似Option.bind和Result.bind的Gen.bind?是的,也许。你是第一个提出要求的人:)这句话的意思是,在过去的几年里,bind可能变得越来越“知名”。
// return a Gen<char list> as expected
// first makes a random number from 5 to 8
// and then creates a random list of characters that long
let randomListLengths =
    gen {
        let! len = Gen.choose(5,8)
        let! item = Gen.elements ['a';'b';'c'] |> Gen.listOfLength len
        return item
    }

// return a Gen<Gen<char list>>
let anotherWayThatDoesNotWork =
    Gen.choose(5, 8)
    |> Gen.map (fun len -> Gen.elements['a';'b';'c'] |> Gen.listOfLength len)