在F#中的双精度列表中指定通用参数

问题描述 投票:0回答:1

我正在F#中创建一个函数,该函数将得到一个列表列表,如果所有列表的长度相同,则返回true,除非该长度为0。

我想指定内部列表的条目可以是通用类型'T,所以我想要的是

let properTable (input : list list<'T>) : bool =
   let lengths = set ([for i in 0..(input.Length-1) -> input.[i].Length])
   not (lengths.Contains(0)) && lengths.Count = 1

将此功能粘贴到F#交互式中时,出现错误消息:

stdin(148,35):错误FS0010:模式中意外的类型应用程序。预期为')'或其他令牌。

如果将input的类型替换为int list list,则该函数有效,但是我想使用任何类型,而不仅是int

我可以让它仅使用一个列表,如

let testSingleList (input : list<'T>) : bool =
    input.Length > 0

我如何完成类似的构造,但要获取列表列表?

f# generic-collections
1个回答
2
投票

您正在混合两种不同的类型注释的“样式”。

使用任一

'T list list

List<List<'T>>

应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.