使用列表中的任何功能验证输入

时间:2018-10-18 03:45:27

标签: .net f# functional-programming composition function-composition

说我想验证必须满足许多功能之一的输入。在F#中执行此操作的最佳方法是什么?这是我想出的一个小例子。

let funcs = 
            [
                fun x -> x % 2 = 0
                fun x -> x % 3 = 0
                fun x -> x % 5 = 0
            ]

let oneWorks x = funcs |> List.tryFind (fun f -> f x = true) |> Option.isSome

oneWorks 2 //true
oneWorks 3 //true
oneWorks 5 //true
oneWorks 7 //false

1 个答案:

答案 0 :(得分:2)

正如评论所说,您所拥有的将正常工作。

但是,我将其简化为:

let any x = funcs |> Seq.exists (fun f -> f x)

any 2 //true
any 3 //true
any 5 //true
any 7 //false