Модуль ML с невидимыми и видимыми компонентами для удаления первого и последнего столбцов матрицы. Матрица хранится в виде списка списков, как показано ниже:sml-карта и структура с использованием рекурсии
| 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] ];
Мне нужна карта использования функция.
Образец Пробег:
- вал мат = [[4,5,6,7], [8,9,10,11], [12,13,14,15]];
- S.reduce (mat);
вал это = [[5,6], [9,10], [13,14]]: INT список список
Но я стараюсь по-другому, как:
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
Как найти правильный ответ?
списки могут иметь любую длину, но кортежи имеют фиксированную длину: если вы определяете функцию для обработки 4-х кортежей типа (a, b , c, d), он не может иметь дело с другими кортежами, такими как (a, b, c) или (a, b, c, d, e, f, g). Поэтому вам нужно работать со списками здесь, а не с кортежами. Используйте сопоставление шаблонов. –