请考虑F#
中的以下代码let rec insert x xs =
match xs with
| [] -> [x]
| y :: ys -> if x <= y then x :: y :: ys
else y :: insert x ys
然后
let insertKeepsOrder (x : int) xs = ordered xs ==> ordered (insert x xs)
最后
==>
我无法理解的是最后一行中的Foo#change_value
含义!!!
这是什么?
答案 0 :(得分:6)
==>
运算符是FsCheck的一部分。它用于表示只有在某些条件为真时才能保存的属性。
所以在你的例子中:
let insertKeepsOrder (x : int) xs = ordered xs ==> ordered (insert x xs)
这意味着ordered (insert x xs)
只有在ordered xs
为真时才应该为真。
您可以在the "Conditional Properties" section of the FsCheck documentation中了解详情。