如何在函数体中使用谓词函数参数?

How can I use a predicate function parameter in the function body?

我正在尝试解决 exercism 上的 'strain' 练习。 该函数应该接受谓词函数作为参数。

let keep pred xs =
  function body

当代码为:

[1;2;3;4] |> Seq.keep (fun x -> x % 2 = 0)

如何在正文中使用谓词?

要回答具体问题 - 如何在正文中使用谓词 - 假设我们想做一些更简单的事情。我们想要编写一个函数,它接受一个谓词 pred 和一个值 v,如果谓词对给定值成立,它只是 returns“OK”,如果不成立,则为“Nope” .

为此,您可以这样写:

let okIfHolds pred v = 
  if pred v then "OK" else "Nope"

要调用谓词,你只需要说pred v。这与您在调用 sqrt 2.0List.sum [1;2;3] 等 built-in 函数时看到的相同 F# 函数应用程序语法 - 只需指定函数及其参数。