是否存在将函数应用于元组的每个成员的现有函数?

时间:2014-02-22 20:32:28

标签: f#

我想将函数应用于同构元组的两个成员,从而产生另一个元组。继我的previous question后,我定义了一个对我来说似乎有意义的运算符:

let (||>>) (a,b) f = f a, f b

然而,我觉得这可能是一个常见的用例,但在标准库中找不到它。它存在吗?

1 个答案:

答案 0 :(得分:6)

我认为没有任何标准的库函数可以做到这一点。

我个人的偏好是避免过多的自定义操作符(它们使代码更短,但是对于之前没有看过定义的人来说,它们更难以阅读)。将函数应用于元组的两个元素在逻辑上接近列表上的 map 操作(将函数应用于列表的所有元素),因此我可能会定义Tuple2.map

module Tuple2 = 
  let map f (a, b) = (f a, f b)

然后你可以很好地使用该功能进行流水线操作:

let nums = (1, 2)
nums |> Tuple2.map (fun x -> x + 1)