我想将函数应用于同构元组的两个成员,从而产生另一个元组。继我的previous question后,我定义了一个对我来说似乎有意义的运算符:
let (||>>) (a,b) f = f a, f b
然而,我觉得这可能是一个常见的用例,但在标准库中找不到它。它存在吗?
答案 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)