我想知道爲什麼F-Sharp不支持無限。F-Sharp(F#)無類型無限
這將在Ruby中工作(但不是在F#):
let numbers n = [1 .. 1/0] |> Seq.take(n)
- > System.DivideByZeroException:試圖除以零。
我可以在很多複雜的方式寫相同的功能:
let numbers n = 1 |> Seq.unfold (fun i -> Some (i, i + 1)) |> Seq.take(n)
- >工作
但是我認爲,第一個會更清晰。 我找不到在F#中使用動態類型無限的簡單方法。 有無窮的關鍵字,但它是浮動:
let a = Math.bigint +infinity;;
System.OverflowException:BigInteger的不能代表無窮大。 在System.Numerics.BigInteger..ctor(Double值) 在$ @ FSI_0045.main() 停止由於錯誤
編輯:還這似乎在重複的工作:
let numbers n = Seq.initInfinite (fun i -> i+1) |> Seq.take(n)
它是在做整數還是浮點算術?這兩者有無窮無盡的概念大不相同。 – 2009-10-13 08:07:13
這在Ruby中不起作用。 Infinity在Ruby中也是一個浮點值,因此您需要進行浮點除法 - 1..1.0/0。 – Chuck 2009-10-13 08:12:01
在這個特定的情況下,讓數字n = seq {1..n}'可能是最簡單的... – 2009-10-13 08:46:09