【发布时间】:2017-05-15 05:16:04
【问题描述】:
具有不可见和可见组件的 ML 模块,用于删除矩阵的第一列和最后一列。 矩阵存储为列表列表,如下所示:
|4|5|6|7| |8|9|10|11| |12|13|14|15| => 是 4x4 数组
上面的矩阵将被存储为 val mat=[[4,5,6,7],[8,9,10,11],[12,13,14,15]];
我需要使用地图功能。
示例运行:
- val mat=[[4,5,6,7],[8,9,10,11],[12,13,14,15]];
- S.reduce(mat);
val it = [[5,6],[9,10],[13,14]] : int list list
但我尝试了不同的方式,例如:
fun reduce(x,y,z,t)=(y,z);
val mat = [(4,5,6,7),(8,9,10,11),(12,13,14,15)];
map reduce(mat);
输出:
- val reduce = fn : 'a * 'b * 'c * 'd -> 'b * 'c
val mat = [(4,5,6,7),(8,9,10,11),(12,13,14,15)] : (int * int * int * int) list
val it = [(5,6),(9,10),(13,14)] : (int * int) list
如何找到正确答案?
【问题讨论】:
-
列表可以有任意长度,但元组的长度是固定的:如果你定义一个函数来处理像 (a,b,c,d) 这样的 4 元组,它就无法处理其他元组,如 (a,b,c) 或 (a,b,c,d,e,f,g)。所以你需要在这里使用列表,而不是元组。使用模式匹配。
标签: dictionary recursion sml ml