【问题标题】:Scheme: Detecting duplicate elements in a list方案:检测列表中的重复元素
【发布时间】:2010-03-03 18:59:22
【问题描述】:

R6RS 或 Chez Scheme v7.9.4 是否有库函数来检查列表是否包含重复元素?

或者,是否有任何内置的集合功能(不允许重复元素)?到目前为止,我只能找到一个例子here

问题在于它实际上并不是 Chez Scheme 库的一部分。虽然我可以编写我自己的版本,但我更愿意使用一个众所周知、经过测试和维护的库函数——尤其是考虑到这是一个多么基本的操作。

所以一个简单的“使用这些内置函数”或“没有内置库实现这个”就足够了。谢谢!

【问题讨论】:

    标签: list set scheme chez-scheme


    【解决方案1】:

    SRFI 1 on list processing has a delete-duplicates function(因此您可以使用它并在之后检查长度)并且可能还有其他您可能会觉得有用的功能。

    【讨论】:

    • 谢谢 - 看起来这将是一个有用的功能。知道 SRFI 1 何时会进入 Chez 计划吗?它似乎已经具备了这个 SRFI 所提供的大部分功能,但我在 v7.9.4 的任何地方都没有看到删除重复项。
    • 我使用PLT,但我对Chez一无所知,但是许多SRFI应该可用于任何流行的Scheme实现;它们基本上是 Scheme 的大型标准库。 Google 立即发现:code.launchpad.net/~scheme-libraries-team/scheme-libraries/srfi 这些 SLS(方案库源)文件应该可以通过 Chez 加载,可能像这样:scheme.com/csug8/libraries.html
    • 谢谢。看起来这可能会奏效,尽管我没有机会下载足够的源代码来尝试将其加载到 Chez 中。
    【解决方案2】:

    凯尔,

    不久前,我需要在 Chez Scheme 中使用一些 SRFI。一些转换为与 Chez Scheme(包括 SRFI-1)一起使用的内容位于:

    http://github.com/dharmatech/chez-srfi

    将“chez-srfi”的路径添加到您的 CHEZSCHEMELIBDIRS 后,您可以导入 SRFI-1:

    (导入 (srfi :1))

    埃德

    【讨论】:

    • 这看起来非常有用,但是当我在方案解释器中尝试导入命令时,我不断收到“异常:未找到库 (srfi:1)”。我尝试设置 CHEZSCHEMELIBDIRS,使用 --libdirs 运行,并从 .../chez-srfi 运行方案,但结果始终相同。我不确定这是否相关,但是当我克隆存储库时,git 似乎不喜欢包含“*”的文件。
    • 哎呀,很抱歉没有早点回复;我最近没有检查堆栈溢出。你在 Windows 上吗?不幸的是,那些 srfi 库使用了 Windows 不支持的命名约定(我知道这很疯狂……)。我正在考虑推出使用“便携式”名称的那个集合的副本。
    • 没问题。我在 Windows 上,所以如果您有机会发布该库的便携版本,您至少可以算上一位粉丝 :)
    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 2019-03-12
    • 2014-08-23
    • 2020-07-06
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多