F# 如何获得一份清单?

F# 如何获得一份清单?,f#,F#,我有一个类似[1..12]的列表,我想得到一个类似[4..9]的列表。不知道我怎么能做到,我对F#是新手。我不知道是否有内置的方法,但我想知道手动方式。假设您使用类似Ocaml的F子集,您可能想使用标准模块,可能是它的过滤功能 否则,可以使用匹配的尾部递归函数 [1..12] |> List.filter (fun x -> x >= 4 && x <= 9) 列表不支持切片,但如果改用数组,也可以执行以下操作: [|1..12|].[3..8] (注

我有一个类似
[1..12]
的列表,我想得到一个类似
[4..9]
的列表。不知道我怎么能做到,我对F#是新手。我不知道是否有内置的方法,但我想知道手动方式。

假设您使用类似Ocaml的F子集,您可能想使用标准模块,可能是它的
过滤功能

否则,可以使用匹配的尾部递归函数

[1..12] |> List.filter (fun x -> x >= 4 && x <= 9)
列表不支持切片,但如果改用数组,也可以执行以下操作:

[|1..12|].[3..8]

(注意3..8而不是4..9,因为基于0的索引)

立即回答您的问题:如何从列表中提取一部分?模式匹配

您可以使用模式匹配来编写从列表中提取范围的函数。基本算法是在Exs 让rec在f acc=函数时执行 |x::xs当f x->takeWhile f(x::acc)xs时 |->List.rev acc xs |>滑行时间((>)分钟) |>takeWhile((>=)最大值)[] [1..12]|>范围4 9 >val-it:int-list=[4;5;6;7;8;9]
[|1..12|].[3..8]