【问题标题】:Scheme matching elements方案匹配元素
【发布时间】:2011-05-04 19:13:51
【问题描述】:

我目前正在玩一些方案,我已经被困了很长一段时间试图弄清楚如何实现一个测试,检查“xs”中的任何元素是否也存储在“l”中.

这就是数学函数'\in',只针对列表xs中的每个元素。

【问题讨论】:

  • 编写递归定义,但是我得到的只是错误,我现在已经厌倦了-.-
  • 是的,对不起,但有点像罗斯拉森斯的路线,现在我来检查它的解决方案。所以很明显他得到了公认的答案:)

标签: list lisp scheme


【解决方案1】:

你想自己写来练习,还是只需要功能?

如果您只想要该功能,请使用 larsmans 的答案(我从未使用过,但对我来说看起来不错)。

要实施,请尝试以下方法(免责声明:我尚未对此进行测试)


(define has-intersect?
      (lambda (xs l)
           (cond
             [(null? xs) #f]
             [(member? (car xs) l) #t]
             [else (has-intersect? (cdr xs) l)])))

【讨论】:

    【解决方案2】:

    在数学术语中,您正在检查两个列表/集合的交集是否为非空。如果你有一个SRFI-1 库,这很简单:

    (not (null? (lset-intersection l xs)))
    

    SRFI-1 的实现可以在SLIB 中找到。

    (免责声明:我是 SLIB 的前贡献者。)

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2013-10-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多