为什么我得到如下的输出?
> 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)