SML:在列表的给定列中查找最大元素

时间:2011-12-21 19:29:56

标签: list find sml max

我需要在列表的给定COLUMN中找到一个最大的元素:

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 个答案:

答案 0 :(得分:2)

最简单的方法是将适当的选择器映射到列表上,然后在结果上使用max。

max (map #2 myList)

注意,当然,没有办法为任意大小的元组(由于类型)做到这一点,并且没有简单的方法将整数转换为选择器。 (除了创建一个函数,您可以手动将每个整数映射到适当的选择器上。)