我想知道为什么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