Sml 我们如何在参数中表示元组列表

Sml 我们如何在参数中表示元组列表,sml,smlnj,Sml,Smlnj,在sml中,我们通过l::ls将整数或字符串列表定义为参数,这有助于我们定义任意长度的列表,然后如果b1>b2,我们可以与=或>或(a2,b2)进行比较,因此一些仅能像上面那样删除的排序是不够的 非常感谢。您可以使用通常的形式(x,y)直接在元组上进行模式匹配 您的delete函数适用于任何列表,因此它也适用于元组列表。下面是一个基于元组中的第一个值筛选列表的示例: fun deleteByFirst(x0, []) = [] | deleteByFirst(x0, (x, y)::ls)

在sml中,我们通过l::ls将整数或字符串列表定义为参数,这有助于我们定义任意长度的列表,然后如果b1>b2,我们可以与=或>或(a2,b2)进行比较,因此一些仅能像上面那样删除的排序是不够的


非常感谢。

您可以使用通常的形式
(x,y)
直接在元组上进行模式匹配

您的
delete
函数适用于任何
列表
,因此它也适用于元组列表。下面是一个基于元组中的第一个值筛选列表的示例:

fun deleteByFirst(x0, []) = []
  | deleteByFirst(x0, (x, y)::ls) = 
    if x = x0 
    then deleteByFirst(x0, ls) 
    else (x, y)::deleteByFirst(x0, ls)

大家好,我可以用类似的模式匹配int*int的数据类型location=coordinet,例如coordinet(x1,y1)::coordinet(x2,y2)::ls作为列表吗?非常感谢。
fun deleteByFirst(x0, []) = []
  | deleteByFirst(x0, (x, y)::ls) = 
    if x = x0 
    then deleteByFirst(x0, ls) 
    else (x, y)::deleteByFirst(x0, ls)