我们怎样才能在参数中表示元组列表

时间:2012-10-19 21:34:38

标签: sml smlnj

在sml中,我们通过l :: ls将整数或字符串列表定义为参数,这有助于我们定义任意长度的列表,然后我们可以与=或>进行比较。或者<。我们怎样才能以类似的方式表示元组? 例如 我可以写,

fun delete(x,l::ls)=if x=l then delete(x,ls) else l::delete(x,ls)

我怎样才能为元组编写类似的内容?

注意,我甚至需要比较元组的各个元素:ie(a1,b1)>(a2,b2)如果b1> b2,那么一些只能像上面那样删除的排序将是不够的。

谢谢你。

1 个答案:

答案 0 :(得分:1)

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

您的delete函数适用于任何'a list,因此对于元组列表也是正确的。下面是一个基于元组中第一个值过滤列表的示例:

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