F#中"==>"语法的含义

Sal*_*ara 2 f# fscheck

考虑F#中的以下代码

let rec ordered xs = 
    match xs with
      | [] | [_]        -> true
      | x1 :: x2 :: xs'  -> x1 <= x2 && ordered (x2 :: xs')
Run Code Online (Sandbox Code Playgroud)

然后

let rec insert x xs = 
    match xs with
    | []      -> [x]
    | y :: ys -> if x <= y then x :: y :: ys 
                 else           y :: insert x ys
Run Code Online (Sandbox Code Playgroud)

最后

let insertKeepsOrder (x : int) xs = ordered xs ==> ordered (insert x xs)
Run Code Online (Sandbox Code Playgroud)

我无法理解的是==>最后一行的意思!

它是什么?

por*_*ges 6

==>运营商的一部分FsCheck.它用于表示仅在某些条件为真时才应保留的属性.

所以在你的例子中:

let insertKeepsOrder (x : int) xs = ordered xs ==> ordered (insert x xs)
Run Code Online (Sandbox Code Playgroud)

这意味着ordered (insert x xs)只有在真实的情况下才应该ordered xs是真的.

您可以在FsCheck文档的"条件属性"部分中阅读有关此内容的更多信息.