在 F# 中的双列表中指定泛型参数
Specifying a generic parameter in a double list in F#
我正在 F# 中创建一个函数,它被给定一个列表列表,如果所有列表的长度都相同,则 returns 为真,除非此长度为 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# interactive 中时,出现错误消息:
stdin(148,35):错误 FS0010:模式中的意外类型应用程序。应为 ')' 或其他标记。
如果我将 input
的类型替换为 int list list
,该函数有效,但我想要任何类型,而不仅仅是 int
.
我可以让它只使用一个列表,如
let testSingleList (input : list<'T>) : bool =
input.Length > 0
除了列表的列表,我如何完成类似的构造?
您混合了两种不同的 "styles" 类型注释。
使用其中之一
'T list list
或
List<List<'T>>
应该可以。
我正在 F# 中创建一个函数,它被给定一个列表列表,如果所有列表的长度都相同,则 returns 为真,除非此长度为 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# interactive 中时,出现错误消息:
stdin(148,35):错误 FS0010:模式中的意外类型应用程序。应为 ')' 或其他标记。
如果我将 input
的类型替换为 int list list
,该函数有效,但我想要任何类型,而不仅仅是 int
.
我可以让它只使用一个列表,如
let testSingleList (input : list<'T>) : bool =
input.Length > 0
除了列表的列表,我如何完成类似的构造?
您混合了两种不同的 "styles" 类型注释。
使用其中之一
'T list list
或
List<List<'T>>
应该可以。