F#List.length总是返回1?

Hin*_*sum 6 f# list

为什么我得到如下的输出?

> List.length [1,2,3];;
val it : int = 1
> List.length [1,2,3,4];;
val it : int = 1
Run Code Online (Sandbox Code Playgroud)

我期待得到3和4!我使用不正确的函数调用吗?

Car*_*ten 16

它与功能无关 - 它与您输入列表项目的方式有关.你用,而不是;!

> List.length [1,2,3];;
val it : int = 1
> List.length [1;2;3];;
val it : int = 3
Run Code Online (Sandbox Code Playgroud)

原因是这[1,2,3]是一个只有一个项目的元组列表:

> [1,2,3];;
val it : (int * int * int) list = [(1, 2, 3)]
Run Code Online (Sandbox Code Playgroud)

看到(..)输出中的内容 - 遗憾的是你可以输入元组而不是(..)很多

如果您使用,;则获得包含3个元素的整数列表:

> [1;2;3];;
val it : int list = [1; 2; 3]
Run Code Online (Sandbox Code Playgroud)

  • 如果你愿意,我们可以在其他地方讨论这个问题,但我认为这里的评论部分不是一个好地方 (2认同)