SML: найти максимальный элемент в заданном столбце списка - PullRequest
0 голосов
/ 21 декабря 2011

Мне нужно найти самый большой элемент в заданной КОЛОНКЕ списка:

myList = [(1,2,0), (3,5,8), (9,1,2)]

Примерно так:

max(myList(:,2)) // maximal element in the 2nd column

В этом примере ответ должен быть 5.

Я написал следующий код, но как я могу поместить 1-й или 2-й столбец во ввод «max»?

fun findSum(myList:MyList) = max(#1 myList) + max(#2 myList)

fun max [] = 0
  | max (x::xs) = foldl Int.max x xs

Спасибо.

1 Ответ

2 голосов
/ 22 декабря 2011

Простейшим способом было бы отобразить соответствующий селектор в списке, а затем использовать max в результате этого.

max (map #2 myList)

Обратите внимание, конечно, что это невозможно для кортежей произвольныхразмер (из-за типов), и нет простого способа конвертировать целое число в селектор.(Помимо создания функции, в которой вы вручную сопоставляете каждое целое число с соответствующим селектором.)

...