首页 > 解决方案 > 具有 BigInteger 索引的 F# 序列

问题描述

我正在寻找一种类似于 F# 中的序列的类型,其中索引可能是大整数,而不是仅限于int. 有没有这样的东西?通过“大整数索引”,我的意思是一种允许与之等效的类型:

let s = Seq.initInfinite (fun i -> i + 10I)

标签: f#

解决方案


以下将生成无限系列的 bigint:

let s = Seq.initInfinite (fun i -> bigint i + 10I)

我怀疑你真正想要的是一个Map<'Key, 'Value>.

这使您可以有效地使用 bigint 作为索引来查找您关心的任何值:

let map = 
    seq {
        1I, "one"
        2I, "two"
        3I, "three"
    }
    |> Map.ofSeq

// val map : Map<System.Numerics.BigInteger,string> =
//   map [(1, "one"); (2, "two"); (3, "three")]

map.TryFind 1I |> (printfn "%A") // Some "one"
map.TryFind 4I |> (printfn "%A") // None

推荐阅读