F-Sharp が無限大をサポートしていないのはなぜでしょうか。
これは 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# で動的に型指定された無限大を使用する簡単な方法が見つかりません。infinity キーワードがありますが、float です:
let a = Math.bigint +infinity;;
System.OverflowException: BigInteger は無限を表現できません。System.Numerics.BigInteger..ctor(Double value) at .$FSI_0045.main@() エラーのため停止
編集:これも繰り返しで機能するようです:
let numbers n = Seq.initInfinite (fun i -> i+1) |> Seq.take(n)