【问题标题】:SML check if 2 items are in the same listSML 检查 2 个项目是否在同一个列表中
【发布时间】:2017-01-16 23:47:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您知道如何检查一件事是否在列表中,为什么很难检查两件事是否在列表中?只需使用 andalso 布尔运算符。

标签: sml member smlnj


【解决方案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

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2013-12-12
      相关资源
      最近更新 更多