评论者:reiddraper
好的,让我们将其转换为使用{{gen/bind}}。就像嵌套属性一样,{{bind}}允许你创建依赖于另一个生成器值的生成器。例如,你的{{gen-random-path}}依赖于先前生成的{{matrix}}变量。所以让我们写一个生成器,它返回一个{{matrix}}和一个{{random-path}}。
`
(def matrix-and-path
"返回一个包含[matrix random-path]的两个元组"
(gen/bind (gen-matrix 6)
(fn [matrix]
(gen/tuple (gen/return matrix) (gen-random-path matrix)))))
(prop/for-all [[matrix random-path] matrix-and-path]
(<= (cost (tsp matrix)) (cost random-path))
`