types - 在 F# 中显式指定参数类型

标签 types f# parameters type-inference

我正在编写一个 F# 函数,它将一个数字分解为质因数。

let factors primes i =
    let mutable j = i
    for p in primes do 
        while (j>1) && (j%p=0) do 
            j <- j/p
            printfn "prime: %i" p

它适用于 int i 的值,但不是 int64值。参数primes是一组 int 值。

我明白为什么会这样 - 类型推断假设函数只需要 int参数 - 但我想明确指定参数类型为 int64 .

是否可以编写此函数以便它同时适用于 intint64 ?

最佳答案

你将不得不做类似的事情

let inline factors (primes :^a list) (i:^a) =
    let zero:^a = LanguagePrimitives.GenericZero
    let one:^a = LanguagePrimitives.GenericOne
    let mutable j = i
    for p in primes do 
        while (j>one) && (j%p=zero) do 
            j <- j/p
            printfn "prime: %i" p

我没有编译器,所以我的语法可能有点偏差

关于types - 在 F# 中显式指定参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7577437/

相关文章:

c - 错误 : conflicting types for 'x'

JAVA:类型参数隐藏类类型

.net - 从F#调用DateTime.TryParse的正确方法是什么?

objective-c - 在 Objective C 中将可变长度的 int 数组作为函数参数传递

java - 使用泛型创建参数类

android - 如何在 Android 中将 int 传递给我的 onDraw(Canvas canvas)?

types - 如何确定 interface{} 值的 "real"类型?

python - 如何绕过违反直觉的 numpy 行为

f# - 如何使数组洗牌函数在后续调用中产生不同的结果

f# - 在 F# 中添加两个元组