F#中“==>”语法的含义
Meaning of "==>" syntax in F#
考虑 F# 中的以下代码
let rec ordered xs =
match xs with
| [] | [_] -> true
| x1 :: x2 :: xs' -> x1 <= x2 && ordered (x2 :: xs')
然后
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)
最后一行的==>
意思我看不懂!!!
这是什么?
==>
运算符是 FsCheck 的一部分。它用于表达一个 属性 应该保持 仅当某些条件为真时 .
所以在你的例子中:
let insertKeepsOrder (x : int) xs = ordered xs ==> ordered (insert x xs)
这意味着只有当 ordered xs
为真时 ordered (insert x xs)
才为真。
您可以在 the "Conditional Properties" section of the FsCheck documentation 中阅读更多相关信息。
考虑 F# 中的以下代码
let rec ordered xs =
match xs with
| [] | [_] -> true
| x1 :: x2 :: xs' -> x1 <= x2 && ordered (x2 :: xs')
然后
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)
最后一行的==>
意思我看不懂!!!
这是什么?
==>
运算符是 FsCheck 的一部分。它用于表达一个 属性 应该保持 仅当某些条件为真时 .
所以在你的例子中:
let insertKeepsOrder (x : int) xs = ordered xs ==> ordered (insert x xs)
这意味着只有当 ordered xs
为真时 ordered (insert x xs)
才为真。
您可以在 the "Conditional Properties" section of the FsCheck documentation 中阅读更多相关信息。