f# - 返回元组的 F# 链接函数
问题描述
我是 F# 的新手,正在尝试链接函数以创建高阶函数。
一个简化的例子是
init
返回一个元组
validate
接受一个元组并返回bool
let init : string * string =
("1", "2")
let validate ((a: string), (b: string)) : bool =
a.Equals(b)
let test = init >> validate
错误
This expression was expected to have type 'a -> 'b' but here has type 'string * string'
解决方案
正如 Piotr 的答案所解释的,您收到错误是因为您有一个值和一个函数。要组合它们,你可以init
变成一个函数,但在这种情况下你真的不需要使用组合。
如果要将值作为参数传递给函数,通常将其作为参数传递要简单得多:
let res = validate init
或者,如果您想按顺序将多个函数应用于输入,则可以使用管道运算符执行此操作:
let res = init |> validate
使用函数组合>>
是一个很好的函数技巧,但我认为它在标准 F# 代码中实际上比大多数人想象的要少得多。我|>
一直在使用,但>>
很少使用。
推荐阅读
- javascript - 在 Laravel 8 项目中找不到 Javascript
- excel - 将 TXT 转换为 CSV
- html - 如何使网格内图像采用可用高度
- dropzone.js - Dropzone:双击缩略图时如何打开文档
- r - 获取 R 中连续点之间的线性模型拟合
- javascript - 如何使用 PHP 和 Javascript 从自动完成搜索中获取记录 ID?
- android - 棒棒糖上未显示推送通知内容文本
- java - 在 Java 客户端中打开 SSLSocket 时,如何在运行时获取服务器的证书?
- java - 打印出从文件读取存储的数组数据
- reactjs - 将函数放入渲染方法会减慢我的应用程序