F# 如何将元素追加到列表末尾

标签 f#

如何将值附加到列表末尾?

let rec add lst value =
        match lst with
        | [] -> [value]

目前,这仅附加一个值为 x 的空列表。如何将值添加到已包含元素的列表的末尾?

最佳答案

对于简单的递归版本使用

let rec add lst value =
    match lst with
    | [] -> [ value ]
    | h :: t -> h :: add t value

请注意,此实现不是尾递归。

但在实践中使用内置的追加运算符

let add lst value = lst @ [ value ]

或者标准函数List.append,其参数的顺序不同。

let add lst value = List.append [ value ] lst

还值得了解的是,append 在单链接不可变列表上是一个昂贵的函数,它会创建整个列表的新副本。

关于F# 如何将元素追加到列表末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72485054/

相关文章:

.net - 无法在 infer.net fun 中加载 FSharp.Core 版本 4.0.0//dll 中的硬链接(hard link)依赖项?

.Net 常量的 F# 模式匹配

visual-studio-2012 - 如何为 Visual Studio 2012 fsi 更新 FSharp.Core

lambda - F# 中的高阶函数

f# - 为递归函数的性能分析 F#

f# - NuGet/包恢复不能很好地与 F# 一起玩

.net - 如何将 StructureToPtr 与 F# 结构一起使用?故障类型

c# - 无法将引用从 C# PCL 添加到 F# PCL(VS 2015 更新 1)

f# - 如何在 F# 中复制到剪贴板?

f# - 为什么返回 int 的函数被报告为 a' -> int 类型