SML检查2个项目是否在同一个列表中

时间:2017-01-15 18:46:19

标签: sml member smlnj

如何检查sml中的2个项目是否在同一个列表中?我尝试更改成员函数,但我无法使其正常工作。

val routeList1 = ["Princes Street", "Haymarket", "Craiglockhart", "Musselburgh", "Stoneybank"]

如果想检查"Princes Street""Haymarket"是否都在routeList1

我是这种语言的新手,所以任何帮助都会很好

2 个答案:

答案 0 :(得分:1)

要检查"Princes Street"中是否有routeList1,您可以写:

List.exists (fn s => s = "Princes Street") routeList1

(使用List.exists [see doc] 检查元素s,使s = "Princes Street"true)。

要检查两个字符串,只需检查一个,然后检查另一个:

List.exists (fn s => s = "Princes Street") routeList1
  andalso List.exists (fn s => s = "Haymarket") routeList1

答案 1 :(得分:1)

您可以调用检查成员资格的函数

fun elem x ys = List.exists (fn y => x = y) ys

一个检查很多东西的成员资格的函数

fun allElems xs ys = List.all (fn x => elem x ys) xs

假设只能比较元素的相等性。然后

val areThey = allElems ["Princes Street", "Haymarket"] routeList1