如何检查SML列表中是否存在x值

时间:2017-04-11 03:52:57

标签: list functional-programming sml ml

我需要编写一个SML函数,它将元组(x和y坐标)列表和整数值作为输入。如果整数是列表中的x值,则函数需要返回true,否则返回false。例如,如果列表是:

val list = [(1,1),(2,4),(3,9),(4,16)];

该功能的行为如下:

memberOf(2, list) = true
memberOf(4, list) = true
memberOf(9, list) = false

有人可以帮我写一个能完成这个的功能吗?我只需要测试x值是否在列表中,元组的y值是不重要的。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用#1 tuple访问元组的第一个参数,使用#2 tuple访问第二个参数。因此,在项目列表结束之前,检查项目是作为第一个参数还是第二个元组列表存在。

(* fn : int * (int * int) list -> bool *)
fun exists_in (item: int, mylist: (int*int) list) =
    if null mylist
    then false
    else if #1 (hd mylist) = item orelse #2 (hd mylist) = item
    then true
    else exists_in (item, tl mylist)

答案 1 :(得分:0)

fun member_of (item, list) = List.exists (fn (x,y) => x = item) list