为什么我得到如下输出?
> List.length [1,2,3];;
val it : int = 1
> List.length [1,2,3,4];;
val it : int = 1
我期望得到 3 和 4!我是否使用了不正确的函数调用?
这与函数无关 - 这与您输入列表项的方式有关。你用,
而不是;
!
> List.length [1,2,3];;
val it : int = 1
> List.length [1;2;3];;
val it : int = 3
原因是[1,2,3]
是一个只有一个项目的元组列表:
> [1,2,3];;
val it : (int * int * int) list = [(1, 2, 3)]
查看输出中的(..)
- 可悲的是,您可以在没有(..)
的情况下输入元组,许多人都爱上了它
如果您改用;
,您将获得包含 3 个元素的整数列表:
> [1;2;3];;
val it : int list = [1; 2; 3]