相关疑难解决方法(0)

是否有可能与F#中的分解序列匹配?

我似乎记得F#的旧版本允许在匹配序列时进行结构分解,就像列表一样.有没有办法在保持序列延迟的同时使用列表语法?我希望避免大量调用Seq.head和Seq.skip 1.

我希望有类似的东西:

let decomposable (xs:seq<'a>) =
   match xs with
   | h :: t -> true
   | _ -> false
seq{ 1..100 } |> decomposable
Run Code Online (Sandbox Code Playgroud)

但这仅处理列表并在使用序列时给出类型错误.当使用List.of_seq时,它似乎会评估序列中的所有元素,即使它是无限的.

f# list sequence pattern-matching lazy-evaluation

16
推荐指数
2
解决办法
5999
查看次数

获取列表,其中每个列表将包含来自另一个列表集合的ax位置的元素

基本上有这个:

[
[1;2;3];
[4;5;7];
[8;9;0];
]
Run Code Online (Sandbox Code Playgroud)

我想得到这个(垂直读/转90度):

[
[1;4;8];
[2;5;9];
[3;7;0];
]
Run Code Online (Sandbox Code Playgroud)

有谁知道在f#中这样做的简单方法?

f#

1
推荐指数
1
解决办法
455
查看次数

标签 统计

f# ×2

lazy-evaluation ×1

list ×1

pattern-matching ×1

sequence ×1