我正在编写一个 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
.是否可以编写此函数以便它同时适用于
int
和 int64
?
最佳答案
你将不得不做类似的事情
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/