我正在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
我如何完成类似的构造,但要获取列表列表?
您正在混合两种不同的类型注释的“样式”。
使用任一
'T list list
或
List<List<'T>>
应该工作。