Types 在F中显式指定参数类型#
我在写一个F#函数,它把一个数分解成素因子Types 在F中显式指定参数类型#,types,f#,parameters,type-inference,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 让因子素数i= 设可变j=i 对于素数do中的p 而(j>1)和(j%p=0)则 你将不得不做一些类似的事情
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
让因子素数i=
设可变j=i
对于素数do中的p
而(j>1)和(j%p=0)则
你将不得不做一些类似的事情
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
let内联因子(素数:^a列表)(i:^a)=
设零:^a=LanguagePrimitives.GenericZero
设一个:^a=LanguagePrimitives.GenericOne
设可变j=i
对于素数do中的p
而(j>1)&(j%p=0)do
j如果只想处理int64
值,只需将1
和0
分别替换为1L
和0L
。jpalmer的回答涵盖了一般情况。我认为这里有一个缩进错误-printfn
行应该被定义,以便在while之后出现loop@jpalmer不,我要它打印每个除数的值。e、 g.对于8,它应该打印2,2,2。看起来像是Haskell的“类型类”概念的一个例子:)这很简单-我还需要像(int64)p
@Kirk一样转换素数-是的,我一直假设你的素数已经是int64值。MSDN的在线文档(有一些例子,特别是使用literal1
):。