我有一个字符串数组,称之为a
,其中每个字符串代表一个数字。我还有一个函数f : int -> int -> int
,我想用它来减少a
到一个数字"。我想写一下:
a |> Array.reduce (fun x y -> f (int32 x) (int32 y))
但这不起作用,因为"减少"禁止我从f
返回整数(因为a
是一个字符串数组)
是否有功能性方式使这项工作无需返回 来自
f
的字符串或事先将字符串数组转换为int数组?
答案 0 :(得分:6)
"This field must be unique."
映射如果您不想调整Array.reduce
来处理字符串,并且您想使用f
,那么我猜您应该先转换(并且说实话:它似乎更容易而不是使用你的包装器 - lambda手动) - 所以为什么不使用
Array.reduce
代替?
如果您担心生成中间阵列的开销,您可以随时将a
|> Array.map int32
|> Array.reduce f
与Array.
切换到懒惰:
Seq.
a |> Seq.map int32 |> Seq.reduce f
除此之外,你可以永远Array.fold
到你的心中:
fold
所以你可以称之为功能或不;)