gpt4 book ai didi

list - 为什么没有 List.skip 和 List.take?

转载 作者:行者123 更新时间:2023-12-03 23:27:17 25 4
gpt4 key购买 nike

为什么没有 List.skip 和 List.take?当然有 Seq.take 和 Seq.skip,但它们不会因此创建列表。

一种可能的解决方案是: mylist |> Seq.skip N |> Seq.toList
但这会创建第一个枚举器,然后从该枚举器创建一个新列表。我认为可能有更直接的方法可以从不可变列表创建不可变列表。由于内部没有元素的复制,因此只有从新列表到原始列表的引用。

其他可能的解决方案(不抛出异常)是:

let rec listSkip n xs = 
match (n, xs) with
| 0, _ -> xs
| _, [] -> []
| n, _::xs -> listSkip (n-1) xs

但这仍然没有回答问题......

最佳答案

顺便说一句,您可以将函数添加到 List 模块:

module List =
let rec skip n xs =
match (n, xs) with
| 0, _ -> xs
| _, [] -> []
| n, _::xs -> skip (n-1) xs

关于list - 为什么没有 List.skip 和 List.take?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4333766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com