Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#调用其参数的标准函数_F# - Fatal编程技术网

F#调用其参数的标准函数

F#调用其参数的标准函数,f#,F#,可能是个新手问题,但有没有像这样的标准函数 let apply f = f() 在F#?否中,没有用于此的标准函数 在大多数情况下,仅调用函数比使用apply更短、更明显,因此我不完全确定这是否有用: foo () apply foo 现在,您还可以使用|>编写应用程序,但这也不是很好: () |> foo 我想apply唯一有用的地方是: functions |> List.map apply functions |> List.map (fun f -> f (

可能是个新手问题,但有没有像这样的标准函数

let apply f = f()

在F#?

否中,没有用于此的标准函数

在大多数情况下,仅调用函数比使用
apply
更短、更明显,因此我不完全确定这是否有用:

foo ()
apply foo
现在,您还可以使用
|>
编写应用程序,但这也不是很好:

() |> foo
我想
apply
唯一有用的地方是:

functions |> List.map apply
functions |> List.map (fun f -> f ()) 
在这里,没有
apply
的版本比较短,但我认为仅仅针对这一个用例在库中拥有一个命名函数是不值得的

实际上,您可以在这里使用
|>
来避免
的乐趣,这是一种可爱的ASCII艺术:-),但不是我想在我的代码库中看到的东西:

functions |> List.map ((|>) ()) 

我的用例:我在
规则中有一个函数列表,然后搜索第一个与
规则列表匹配的函数。选择apply |>list。tryHead
@Mikhail如果你有一个函数列表,它以unit(
()
)作为输入,但每次调用它们时都返回不同的结果,那么这些函数就不是。在函数式编程中,您应该尽可能地喜欢纯函数,因此也许可以进行更具功能性的设计。@MarkSeemann他们是纯函数。我通过将参数部分应用于许多函数来构建规则列表,这些函数的最后一个参数是
unit
。想想10条不同的规则,每一条都有不同的参数。我应用这些参数,将它们放入一个列表中,然后搜索第一个函数,该函数将生成一些结果
unit
只是使函数调用变懒的一种方法。@Mikhail如果需要懒计算,那么F#有
lazy
表达式,听起来更适合。。。