Интересно, почему 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 #.
Ключевое слово бесконечности есть, но оно с плавающей точкой:
let a = Math.bigint +infinity;;
System.OverflowException: BigInteger не может представлять бесконечность.
в System.Numerics.BigInteger..ctor (двойное значение)
at. $ FSI_0045.main @ ()
остановлен из-за ошибки
Редактировать: также, кажется, это работает в итерации:
let numbers n = Seq.initInfinite (fun i -> i+1) |> Seq.take(n)