gpt4 book ai didi

f# - 泛型函数的泛型零

转载 作者:行者123 更新时间:2023-12-04 17:18:32 24 4
gpt4 key购买 nike

我有一个函数来计算序列的累积和。

let cumsum<'T> = Seq.scan (+) 0 >> Seq.skip 1 >> Seq.toArray

虽然看起来很一般,但整数 0使它成为非通用的,因此我不能用浮点数序列调用该函数。

是否有一个通用零可以代替我的硬编码 0 ,或者可能是使函数通用的不同方式。

最佳答案

您可以使用 GenericZero原始但您需要使您的函数内联并使其明确成为一个函数(现在您的函数是用 point-free style 编写的),因为原则上值不能内联。

let inline cumsum s = 
s |> Seq.scan (+) LanguagePrimitives.GenericZero |> Seq.skip 1 |> Seq.toArray

请注意,通过删除类型参数 'T静态成员约束由编译器自动推断:
val inline cumsum :
s:seq< ^a> -> ^b []
when ( ^b or ^a) : (static member ( + ) : ^b * ^a -> ^b) and
^b : (static member get_Zero : -> ^b)

关于f# - 泛型函数的泛型零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28064129/

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