例如说我有一个列表[1,5,10]
,如何将其放入一个空列表中使其成为[[1,5,10]
?
答案 0 :(得分:0)
由于[[1,5,10]
不是有效列表,因此我假设您的意思是[[1,5,10]]
,即 int列表。您可以像刚才那样创建这样的列表:[[1,5,10]]
。对任意的 int列表执行此操作可以像这样:
fun singleton (xs : int list) = [xs]
val test_1 = singleton [1,5,10] (* = [[1,5,10]] *)
没有串联发生,因为这是同义的:
- [1,5,10] :: [];
> val it = [[1, 5, 10]] : int list list
也就是说,将列表[1,5,10]
放在空白列表的前面。
这演示了::
(cons)运算符。如果您想将多个元素(例如,多个 int列表)放在彼此前面,这就是所谓的串联,您可以使用@
(附加)运算符,例如喜欢:
- [1,5,10] @ [11,15,20]
> val it = [1, 5, 10, 11, 15, 20] : int list
最后,有一个List.concat
运算符获取列表列表并将其全部追加:
- List.concat [ [1,2,3], [4,5,6], [7,8,9] ];
> val it = [1, 2, 3, 4, 5, 6, 7, 8, 9] : int list
此时,一个好的练习是定义此递归函数:
fun my_concat [] = ...
| my_concat (xs :: xss) = ...
其中xs
是列表列表中的第一个列表,而xss
是列表的其余列表。
(我试图通过给xs
一个复数名称和xss
一个双复数名称来强调这一点。)