Есть ли уловки для неявных преобразований в F #?
Рассмотрим этот код F # для суммирования чисел нижеi
которые кратны 3 и 5:
let isMultipleOfThreeOrFive n =
(n % 3 = 0) || (n % 5 = 0)
let sequenceOfMultiples i =
seq {1 .. i - 1} |> Seq.filter isMultipleOfThreeOrFive
посколькуi
являетсяint
переполнится, еслиi
большой. Эта версия сBigInteger
заботится об этом:
let isMultipleOfThreeOrFive n =
(n % 3I = 0I) || (n % 5I = 0I)
let sequenceOfMultiples (i : System.Numerics.BigInteger) =
seq {1I .. i - 1I} |> Seq.filter isMultipleOfThreeOrFive
Чтобы преобразоватьint
версия кBigInteger
версия, мне пришлось добавить многоI
с после чисел. Это потому, что F # не делает неявных преобразований.
Есть ли простой способ обойти это, или добавлялI
S в 6 местах, что лучше всего сделать?