gpt4 book ai didi

f# - 是否可以在 F# 中编写默认函数

转载 作者:行者123 更新时间:2023-12-04 23:10:36 26 4
gpt4 key购买 nike

Tacit or point-free style programming允许创建函数而不考虑它们的参数。这可以在 F# 中完成吗?

最佳答案

只是为了配合 Chuck 的回答和 Chris Smiths 的评论,你可以写

let digits = string_of_int >> String.length
digits 9000;; // 4
[1; 10; 100] |> List.map digits;; // [1;2;3]

当你将这些组合和管道运算符与高阶函数结合起来时,你可以非常简洁地做复杂的事情:
let prodSqrtAbs = Seq.map (abs>>sqrt) >> Seq.reduce (*)
prodSqrtAbs [| -9.0; 4.0 |];; // 6.0

编辑 :我刚刚阅读了 J 及其隐式 fork 运算符。这是非常强大的。您可以在 F# 中构建等效的高阶运算符,但不会隐式应用它们。因此,例如,首先定义 lift (使用显式参数)
let lift op a b x = op (a x) (b x)

然后明确应用它
let avg = lift (/) List.sum List.length

得到类似的东西 the J example在您链接到的维基百科页面上。但这并不完全是“默契”。

关于f# - 是否可以在 F# 中编写默认函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1806909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com