Sml 元组多态函数表

Sml 元组多态函数表,sml,Sml,给定一个类型为real*”的列表。我想首先找到列表中最大的实数,然后对于最大的实数返回相应的'a'。谁能给我一个提示吗。我试着做一个模式 ((x1,x2),(y1,y2) :: xs) = if x1 > largest((y1,y2)::xs) then x2 else y2. 我没有写完整的功能,因为我是我的手机。我已经处理了空列表和包含一个元素的列表。也许这就是您要找的?请注意,空列表的大小写仍然丢失,这会给您一个编译器警告 fun largest ((x1,x2) :: nil)

给定一个类型为real*”的列表。我想首先找到列表中最大的实数,然后对于最大的实数返回相应的'a'。谁能给我一个提示吗。我试着做一个模式

((x1,x2),(y1,y2) :: xs) = if x1 > largest((y1,y2)::xs) then x2 else y2.

我没有写完整的功能,因为我是我的手机。我已经处理了空列表和包含一个元素的列表。

也许这就是您要找的?请注意,空列表的大小写仍然丢失,这会给您一个编译器警告

fun largest ((x1,x2) :: nil) = x2
  | largest ((x1,x2) :: (y1,y2) :: xs) = 
    if y1 > x1 then 
      largest((y1,y2) :: xs) 
    else 
      largest((x1,x2) :: xs) 

val max = largest [(1.0,"a"), (4.0, "b"), (4.0, "c"), (3.0, "d")]

给你:max=b

有没有一种不用foldl的方法?很抱歉再次打扰你。我还没有学习过高阶函数,即cases、NONE和SOME。你能告诉我没有它们怎么做吗?