F# 将多个功能合并为一个

F# 将多个功能合并为一个,f#,functional-programming,F#,Functional Programming,你好。你能帮我把几个函数组合成一个大函数吗 我有一个(联系人列表:seq)和功能 let checkEqual localPhone azurePhone = localPhone = azurePhone 我做了Seq.map来获得函数的序列(string->bool): 现在我需要以某种方式将这个seq组合成一个大func(string->bool),以便在Azure移动服务的Where子句中使用它 let! result = table.Where(fun y > chec

你好。你能帮我把几个函数组合成一个大函数吗

我有一个
(联系人列表:seq)
和功能

let checkEqual localPhone azurePhone =
    localPhone = azurePhone
我做了
Seq.map
来获得函数的序列
(string->bool)

现在我需要以某种方式将这个seq组合成一个大func
(string->bool)
,以便在Azure移动服务的Where子句中使用它

let! result = table.Where(fun y > checkAll y).ToEnumerableAsync() 
              |> Async.AwaitTask
我想表达如下:
y==x1 | | y==x2 | |等

对于此特定场景,您可以使用:


对于更一般的解决方案,您可以编写如下内容:

checkAll y = checks |> Seq.fold (fun acc check -> acc || check y) false
acc
通常是这样命名的,因为它是累加器——存储到目前为止计算的值

exists
的优点是,一旦找到真实值,它将停止扫描序列,而
fold
始终位于序列的末尾。但是,
fold
更一般:你可以用它在你的序列上写一个和,一个积,或者任何全局计算

checkAll y = checks |> Seq.exists (fun f -> f y)
checkAll y = checks |> Seq.fold (fun acc check -> acc || check y) false